Анимация UIView frame.origin
В Интернете я видел пример кода, касающийся простого вставки или выкатывания UIView. Имеет смысл иметь начало UIView с его координатами за пределами экрана (негатив), а затем параметр анимации просто меняет кадр UIView. Итак, первый вопрос: обеспечивает ли это наиболее очевидный метод?
Однако в моем коде происхождение фрейма не присваивается. Я получаю ошибку XCode для этой строки, которая говорит столько же.
Я просто хочу сделать что-то подобное внутри анимации:
self.viewPop.frame.origin.y=100;
Любая помощь приветствуется.
ОБНОВИТЬ
Я решил эту проблему. Техника, которую я обнаружил, состоит в том, чтобы назначить ваш фрейм просмотра другому CGRect и внести изменения в этот CGRect, а затем назначить его обратно фрейму:
CGRect frame = self.moveView.frame;
frame.origin.x = newvalue.
[UIView animateWithDuration:2.0 animations:^{
self.moveView.frame = frame;
}];
Ответы
Ответ 1
Я решил эту проблему. Техника, которую я обнаружил, состоит в том, чтобы назначить ваш фрейм просмотра другому CGRect и внести изменения в этот CGRect, а затем назначить его обратно фрейму:
CGRect frame = self.moveView.frame;
frame.origin.x = newvalue.
[UIView animateWithDuration:2.0 animations:^{
self.moveView.frame = frame;
}];
Ответ 2
FWIW, хорошо иметь категорию UIView для этого типа вещей:
@interface UIView (JCUtilities)
@property (nonatomic, assign) CGFloat frameX;
-(CGFloat)frameX;
-(void)setFrameX:(CGFloat)newX;
@end
@implementation UIView (JCUtilities)
- (CGFloat)frameX {
return self.frame.origin.x;
}
- (void)setFrameX:(CGFloat)newX {
self.frame = CGRectMake(newX, self.frame.origin.y,
self.frame.size.width, self.frame.size.height);
}