Как анимировать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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