In case it helps with your future animatable design, my particular app has a 
layout kind of like this:

——
|     | (8 points separation)Title (could be long)
|     | (8 points separation)Subtitle (could be long)
—— 

and I used something like this in viewDidLoad to preserve the values before I 
had any data:

-(void)viewDidLoad
{
        self.iconIndicatorWidthOriginalConstant =
                self.iconIndicatorWidth.constant;
        self.iconTitleLabelLeadingOriginalConstant =
                self.iconTitleLabelLeading.constant;
        self.iconSubtitleLabelLeadingOriginalConstant =
                self.iconSubtitleLabelLeading.constant;

        self.iconIndicatorWidth.constant = 0;
}

and I used something like this when I knew whether or not I wanted to show the 
icon indicator (the box to the left of the title and subtitle):

-(void)updateUI:(BOOL )showIconIndicator
{
        CGFloat newIconIndicatorWidthConstant;
        CGFloat newIconTitleLabelLeadingConstant;
        CGFloat newIconSubtitleLabelLeadingConstant;

        if (showIconIndicator)
        {
                newIconIndicatorWidthConstant =
                        self.iconIndicatorWidthOriginalConstant;
                newIconTitleLabelLeadingConstant =
                        self.iconTitleLabelLeadingOriginalConstant +
                        self.iconIndicatorWidthOriginalConstant + 8;
                newIconSubtitleLabelLeadingConstant =
                        self.iconSubtitleLabelLeadingOriginalConstant +
                        self.iconIndicatorWidthOriginalConstant + 8;
        }
        else
        {
                newIconIndicatorWidthConstant = 0;
                newIconTitleLabelLeadingConstant =
                        self.iconTitleLabelLeadingOriginalConstant;
                newIconSubtitleLabelLeadingConstant =
                        self.iconSubtitleLabelLeadingOriginalConstant;
        }

        if (newIconIndicatorWidthConstant != self.iconIndicatorWidth.constant)
        {
                [self.iconIndicator.superview layoutIfNeeded];
                [UIView animateWithDuration:0.3 animations:
                ^{
                        self.iconIndicatorWidth.constant =
                                newIconIndicatorWidthConstant;
                        self.iconTitleLabelLeading.constant =
                                newIconTitleLabelLeadingConstant;
                        self.iconSubtitleLabelLeading.constant =
                                newIconSubtitleLabelLeadingConstant;

                        [self.iconIndicator.superview layoutIfNeeded];
                }];
        }
}

--
Gary L. Wade
http://www.garywade.com/ <http://www.garywade.com/>
> On Dec 14, 2016, at 3:39 PM, Doug Hill <cocoa...@breaqz.com> wrote:
> 
> Great, more good stuff to know!
> 
> However, trying this out I see that some views animate and others don't (just 
> jump into place). I guess I'll look into a more animatable design.
> 
> Doug Hill
> 
>> On Dec 14, 2016, at 3:24 PM, Ken Thomases <k...@codeweavers.com> wrote:
>> 
>> On Dec 14, 2016, at 5:15 PM, Doug Hill <cocoa...@breaqz.com> wrote:
>>> 
>>> Ok, this is more good information to keep in mind when designing autolayout 
>>> constraints. Given that my design isn't animatable, it's back to the 
>>> autolayout drawing board. Again.
>> 
>> I think it works to animate a change of constraints if you do the 
>> -layoutIfNeeded on the window within the animation context.  It's 
>> technically animating the frame changes rather than the constraints, which 
>> can transition through some different states and even temporarily violate 
>> constraints, but for this case it should work.
>> 
>> Regards,
>> Ken
>> 
> 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to