HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了设置“edgesForExtendedLayout = UIRectEdgeNone”不会阻止我的子视图在iOS 7中向上移动大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在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;
}

这是用于创建添加在iOS 7上显得更高的自定义子视图的代码

CGRect customcatontrolFrameRect = {{0.0f,240.0f},{100.0f,100.0f}};
self.customcatontrol = [[MyCustomcatontrol alloc] initWithFrame:customcatontrolFrameRect];

self.customcatontrol.autoresizingMask =  UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:self.customcatontrol];

一个重要的细节,如果它有帮助,这个视图是从一个nib文件创建的,但iOS 7上比iOS 6更高的自定义子视图是在viewDidLoad中以编程方式创建和添加的唯一子视图,在我设置之后edgesForExtendedLayout属性.无论是否设置egdesForExtendedLayout属性,从笔尖创建的所有其他子视图都不会受到影响.

我的两个问题是……

>为什么即使我将edgesForExtendedLayout属性设置为UIRectEdgeNone后,我的自定义子视图在iOS 7上显得更高?
>为什么其他子视图(从笔尖加载的子视图)在iOS 7中显得更高?

提前感谢您的智慧!

解决方法

1.

设置为UIRectEdgeNone的edgesForExtendedLayout的目的是不向任何方向扩展视图,但是当使用位置为0,0的帧时,您的视图现在将在屏幕大小(现在位于statusBar!下方)的原点开始(就像你使用customcatontrol一样).您需要调整视图/ viewController的框架以表示您要在statusBar / navigationBar下启动或使状态/ nagivationBar不透明;或者如果仅用于一个视图,则添加UIRectEdgeTop.

将navigationController设置为opaque也将使用statusBar:

self.navigationController.navigationBar.translucent = NO;

2.

由于界面构建器认情况下在NavigationBar下正确设置框架,因此您当然可以更改它.它使用UIRectEdgeAll和autoresizing.

大佬总结

以上是大佬教程为你收集整理的设置“edgesForExtendedLayout = UIRectEdgeNone”不会阻止我的子视图在iOS 7中向上移动全部内容,希望文章能够帮你解决设置“edgesForExtendedLayout = UIRectEdgeNone”不会阻止我的子视图在iOS 7中向上移动所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。