Как анимировать UIView, установив его фрейм с ограничениями автоматического макета?IOS

Программируем под IOS
Anonymous
Как анимировать UIView, установив его фрейм с ограничениями автоматического макета?

Сообщение Anonymous »

У меня есть подкласс UIView, который называется MyView
@implementation MyView
{
UIView *_imageView;
}

- (instancetype) init
{
if (self = super) {
_imageView = ...
[self addSubview:_imageView];
}
}

...
- (void)layoutSubviews
{
[super layoutSubviews];

_imageView.frame = self.bounds;
}

..

В моем MyViewController я хочу вызвать анимацию изображения, то есть уменьшение его размера:
-(void)viewDidLoad
{
_dwellTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(animateView) userInfo:nil repeats:NO];
}

- (void)animateView
{
[myView animateOnImage];
}

В классе MyView анимация не работает, когда я устанавливаю кадры _imageView, но когда я устанавливаю его непрозрачность, например .alpha или .layer .cornerRadius, все работает отлично. Ресурсы, с которыми я столкнулся в Интернете, предполагают, что _imageView имеет ограничения автоматического макета, и его фрейм по-прежнему контролируется мной, указанным в LayoutSubviews. Кажется, что анимация всегда заканчивается в автоматическом макете.
-(void)animateOnImage {
[UIView animateWithDuration:2 animations:^{
[self shrinkImageView];
}];
}

- (void)shrinkImageView {
// Doesn't work
_imageView.frame = CGRectMake(100, 100, 400, 500);
// Works
_imageView.alpha = 0.5;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... onstraints

Вернуться в «IOS»