Вы изменяете фрейм после преобразования, поэтому идентификация не работает в преобразовании.Вместо изменения x и y используйте перевод в UIView.Моя цель с ржавая, но посмотрим, о чем ты думаешь.Я задерживаю его, чтобы вы могли видеть начальную и конечную позиции. Кроме того, плюсы использования перевода вместо манипулирования фреймом заключаются в том, что если вы используете AutoLayout, вы не портите фрейм.
#import "ViewController.h"
@interface ViewController ()
@property UIView *testView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_testView = [[UIView alloc]init];
[_testView setFrame:CGRectMake(20, 100, self.view.bounds.size.width - 40, 100)];
[_testView setBackgroundColor:[UIColor greenColor]];
[self.view addSubview:_testView];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//just delaying it so you can see the start position
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//code to be executed on the main queue after delay
self.testView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(0.94, 0.94), CGAffineTransformMakeTranslation(0, 10));
self.testView.alpha = 0;
[UIView animateWithDuration:1 delay:2 options:(UIViewAnimationOptionCurveEaseInOut) animations:^{
self.testView.transform=CGAffineTransformIdentity;//This pops the view up
self.testView.alpha = 1;
} completion:^(BOOL finished) {
}];
});
}
@end