Bea*_*red 7 iphone objective-c ios ios7
我有一个在iOS 5时代写过的视图控制器,我正在尝试将其转换为iOS 7.阅读iOS 7过渡指南并在SO上进行探索后,我发现我需要设置新的iOS 7属性edgesForExtendedLayout以UIRectEdgeNone防止我的一个自定义子视图在iOS 7上出现比在iOS 6上显示的高49个像素.但是,在设置该属性后,我的自定义子视图在iOS 7上仍然显示高出49个像素,我不知道还有什么我需要做的.这是我添加到viewDidLoad方法中的简单代码...
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
这是用于创建和添加在iOS 7上显得更高的自定义子视图的代码...
CGRect customControlFrameRect = {{0.0f, 240.0f}, {100.0f, 100.0f}};
self.customControl = [[MyCustomControl alloc] initWithFrame:customControlFrameRect];
self.customControl.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:self.customControl];
Run Code Online (Sandbox Code Playgroud)
另一个重要的细节,如果它有帮助,这个视图是从一个nib文件创建的,但iOS 7上比iOS 6更高的自定义子视图是viewDidLoad我设置edgesForExtendedLayout属性后创建和编程添加的唯一子视图.无论是否设置egdesForExtendedLayout属性,从笔尖创建的所有其他子视图都不会受到影响.
我的两个问题是......
提前感谢您的智慧!
它的目的,edgesForExtendedLayout它被设置为UIRectEdgeNone以不使用带,0 0位置的帧时在任何方向上延伸的观点,但你的观点现在在屏幕尺寸中的原点开始(现在下面状态栏!)(喜欢你做了customControl).您需要调整视图/ viewController的框架以表示您要在statusBar/navigationBar下启动或使状态/ nagivationBar不透明; 或者如果仅用于一个视图,则添加UIRectEdgeTop.
将navigationController设置为opaque也将使用statusBar:
self.navigationController.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)
由于界面构建器默认情况下在navigationBar下正确设置框架,因此您当然可以更改它.它使用UIRectEdgeAll和自动化.
| 归档时间: |
|
| 查看次数: |
23103 次 |
| 最近记录: |