Bir UILabel'ın bir animasyon bloğunda sınırlarını değiştirdiğimde, yalnızca boyutu artırdığımda, UILabel'in boyutunu değiştirdiğimde, ancak boyutunu değiştirmediğimde çalıştığını fark ettim. UILabel'ı düz bir UIView ile değiştirme, amaçlandığı şekilde çalışır.Neden bir UILabel sınırında animasyonlar sadece boyutu artırırken çalışıyor?
Not: UILabel'ın contentMode özelliğinin UIViewContentModeScaleToFill öğesinin değiştirilmesi bu sorunu giderir, ancak contentMode özelliğini değiştirmeden boyutu artırırken neden çalıştığını hala anlamıyorum.
#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
Buraya bir cevabınız var: http://stackoverflow.com/questions/3298764/animating-uilabel-size-decrease – Amit
@ amit3117 no this doesn 'nedenini açıklıyor, ve ben zaten çerçeveyi değil sınırlarını değiştiriyorum – peko
Sadece kodunuzu ayarlıyorum ve gördüğüm aynı efekti görüp görmediğinizi merak ediyorum, sınırlar animasyonla büyüyor, ancak tekrar tıkladığınızda, ortalanmış metnimin sadece geri döndüğünü fark etsem de küçük boyuta "çıt" Büyürken yaptığı gibi ... sadece arka plan rengi, küçük bir etiket için yeniden boyutlandırma efektine sahipti. – rezand