任何人都可以给我一个详细的解释,为什么iOS正在处理它的横向方向,它的方式和框架和转换?iOS的风景定位处理在幕后
我正在谈论的是通过登录各视图的生命周期方法的观点说明显示此以下行为:
viewDidLoad: "UIView: 0x1edb5ba0; frame = (0 0; 568 320); autoresize = W+H; layer = <CALayer: 0x1edb5c50>"
viewWillAppear: "UIView: 0x1edb5ba0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x1edb5c50>"
viewDidAppear: "UIView: 0x1edb5ba0; frame = (0 0; 320 568); transform = [0, 1, -1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x1edb5c50>"
这样做的影响是微妙的,但很有趣。
例如,我启动我的应用程序的初始界面取向,和支持的接口取向都设置为“风景(右home键)”
然后我显示我的RootViewController的像这样:
self.viewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];
self.window.rootViewController = self.viewController;
这个.xib将其方向设置为横向,并将帧设置为0,0,568,320。它正确显示,并且我可以触摸屏幕上的所有点。
当我提出像这样一个子视图的问题然后是:
SomeView *someView = [[SomeView alloc] initWithFrame:self.view.frame];
[self.view addSubview:someView];
在这个时间点,self.view.frame被报告为(0,0; 320 568)和self.view.transform被报告为transform = [0,1,-1,0,0,0]。最好的情况下,最终的结果是我只能触摸我刚刚显示的视图的左侧320像素,最糟糕的情况是视图的布局被屠杀。
由于各种做题,我已经学会了这样做的正确方法如下:
SomeView *someView = [[SomeView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:someView]
我还没有学到过什么是为什么,我对此感到非常好奇。
我更加好奇的是为什么在实例化和显示过程中操纵视图。
自从我与横向专用应用程序纠结已经有一段时间了,但由于某种原因,我认为当前这种实现与早期版本的iOS不同,这是否正确?