[我在一个旧项目的VC中获得了以下代码(没有情节提要,纯代码):
- (void)viewDidLoad {
[super viewDidLoad];
self.mapView = [[MKMapView alloc] initWithFrame:CGRectInset(self.view.frame, 10, 10) ];
[self.view addSubview:self.mapView];
self.view.backgroundColor = [UIColor redColor];
self.mapView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.view.translatesAutoresizingMaskIntoConstraints = NO; // <--- this line
}
如果我评论最后一行,则在ios8下从纵向旋转到横向或以其他方式旋转大约3秒!另外,偶尔在随机时间出现[[无法分配渲染缓冲区存储!错误。
如果我不发表评论,那几乎是瞬时的(0.7秒
)。似乎只与mapview相关,其他视图/ VC旋转也很好。在ios7下,无论是否注释该行,旋转速度都很快。为什么?为什么只影响mapview?
Edit:
显然,autoresizingmask是错误的。如果在viewDidLoad
中将其值设置为none并在willRotate中手动更改帧,它将快速运行。当我更新.xib文件并添加了Autolayout选项时,问题消失了。我想出了这个主意,因为您写道自动调整大小是解决方案中的问题。