Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy are animations on bounds of an UILabel only working when increasing the size?
    text
    copied!<p>I noticed that when i change the bounds of an UILabel in an animation block it only works if i increase the size, when i decrease the size the UILabel just changes his size but doesn't animate. Replacing the UILabel with a plain UIView works as intended.</p> <p>Note: Changing the contentMode property of the UILabel to UIViewContentModeScaleToFill fixes this issue, but i still don't understand why it works when increasing the size without changing the contentMode property.</p> <pre><code>#import "FooView.h" @interface FooView () @property (strong, nonatomic) UILabel *label; @property (assign, nonatomic) BOOL resized; @end @implementation FooView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor lightGrayColor]; self.label = [[UILabel alloc] initWithFrame:(CGRect){0, 0, frame.size}]; self.label.backgroundColor = [UIColor greenColor]; [self addSubview:self.label]; _resized = false; UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeSize)]; tapRecognizer.numberOfTapsRequired = 1; [self addGestureRecognizer:tapRecognizer]; } return self; } - (void)changeSize { [UIView animateWithDuration:0.8 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ CGRect bounds = self.label.bounds; if (self.resized) { bounds.size.height *= 2; bounds.size.width *= 2; } else { bounds.size.width /= 2; bounds.size.height /= 2; } self.label.bounds = bounds; } completion:^(BOOL finished) { self.resized = !self.resized; }]; } @end </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload