iOS中全屏的bounds设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS中全屏的bounds设置相关的知识,希望对你有一定的参考价值。

参考技术A ios中全屏的bounds设置,我们应该怎么设置呢?当然我们可以说几种方式。

有人说可以使用控制器的view的bounds,有人说可以使用[UIScreen mainScreen]的bounds来设置。

这里要强调的是[UIScreen mainScreen]的方式更加安全,因为控制器的方式有可能随着导航栏的透明度的改变会发生变化。这样就会出现64的区别。因此为了安全,还是使用[UIScreen mainScreen]比较好。

UIView 子类的实例不是全屏的,即使它的 frame 是 window bounds 属性

【中文标题】UIView 子类的实例不是全屏的,即使它的 frame 是 window bounds 属性【英文标题】:Instance of UIView subclass is not full screen even if its frame is the window bounds property 【发布时间】:2015-05-01 11:01:44 【问题描述】:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    CGRect frame = self.window.bounds;
    BNRHypnosisView *firstView = [[BNRHypnosisView alloc] initWithFrame:frame];
    [self.window addSubview:firstView];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;

BNRHypnsosisView(UIView 的子类)的实例 firstView 的框架等于窗口边界。为什么不是全屏?

编辑:在 BNRHypnosis View 中,我有一个 @property (nonatomic) CGRect 框架。这是我在这个子类中唯一的东西。在我删除它之后(我已经看到我没有在任何地方使用它),一切正常。谁能告诉我为什么?

【问题讨论】:

您不应该直接向窗口添加视图。使用UIViewController。它还会为您处理轮换。 【参考方案1】:

声明的“frame”属性会覆盖 UIView 的现有属性“frame”。它是 iOS 中任何 UIView 的基本属性。如果你覆盖它,你必须在你的实现中调用[super setFrame:<frameValue>],以免失去基本和强制性的功能。

此声明的属性在 GitHub 上 BNRHypnosisView 的实际实现中不存在:https://github.com/rahims/iOS-Programming-The-Big-Nerd-Ranch-Guide/blob/master/Chapter-5/Hypnosister/Hypnosister/BNRHypnosisView.h

【讨论】:

谢谢,这很有帮助:)

以上是关于iOS中全屏的bounds设置的主要内容,如果未能解决你的问题,请参考以下文章

UIView 子类的实例不是全屏的,即使它的 frame 是 window bounds 属性

android中全屏 及 去掉标题栏效果有啥区别

把WebView设置成全屏的代码怎么写?

元素全屏的设置与监听

解决Ueditor在bootstarp 模态框中全屏问题

在 iOS 上的 Safari 中全屏打开网页