iPhone X 的 UIView 高度未扩展
UIView height not expanding for iPhone X
我有一个不使用故事板的旧版应用程序。一切都以编程方式添加和配置。我调整了一个 UIButton 约束,使其位于 iPhone X 屏幕底部。我注意到按钮不再响应触摸事件,一旦我将视图背景色设置为黄色,我注意到按钮在它所属的视图的边界。
我已经尝试了几种方法来扩展视图以填满屏幕,但似乎没有任何效果。我设置了视图高度,将内容模式设置为纵横比填充和缩放以填充,但没有成功。
[self.view setBackgroundColor:[UIColor yellowColor]];
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
我尝试将视图的框架设置为主屏幕的边界。那没有用。
CGRect frame = [[UIScreen mainScreen] bounds];
self.view.frame = frame;
我尝试为主视图设置高度限制,但没有成功。不过我不确定我这样做是否正确。
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:812]];
谁能告诉我哪里做错了?
toItem:nil
应该是您要将其约束到的视图...例如它是 superview
... 此 viewConstraint
将此视图的高度设置为 812.0
您需要将 NSLayoutAttributeNotAnAttribute
更改为 NSLayoutAttributeHeight
并将 toItem
更改为 self.view.superview
或您想要将其绑定到的任何 view
... 并更改812
到 0.0
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view.superview
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0.0]];
不过我会问... self.view
是 viewControllers
view
吗?你不需要以任何方式设置它的 frame
......除非包含 viewController
它应该自动占据整个屏幕,因为它是 bounds
做这些检查
rootViewController
的画框是AppDelegate
的didFinishLaunchingWithOptions
中的[[UIScreen mainScreen] bounds]
吗?像这样
self.window.rootViewController.view.frame = [[UIScreen mainScreen]bounds];
检查 UIWindow
的框架是否已设置为 mainScreen
边界。
self.window.frame = [[UIScreen mainScreen] bounds]
通过启用约束错误断点
检查是否有任何自动布局约束被破坏
- 检查开始按钮是否是 ViewController.
主视图的子视图
我有一个不使用故事板的旧版应用程序。一切都以编程方式添加和配置。我调整了一个 UIButton 约束,使其位于 iPhone X 屏幕底部。我注意到按钮不再响应触摸事件,一旦我将视图背景色设置为黄色,我注意到按钮在它所属的视图的边界。
我已经尝试了几种方法来扩展视图以填满屏幕,但似乎没有任何效果。我设置了视图高度,将内容模式设置为纵横比填充和缩放以填充,但没有成功。
[self.view setBackgroundColor:[UIColor yellowColor]];
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
我尝试将视图的框架设置为主屏幕的边界。那没有用。
CGRect frame = [[UIScreen mainScreen] bounds];
self.view.frame = frame;
我尝试为主视图设置高度限制,但没有成功。不过我不确定我这样做是否正确。
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:812]];
谁能告诉我哪里做错了?
toItem:nil
应该是您要将其约束到的视图...例如它是 superview
... 此 viewConstraint
将此视图的高度设置为 812.0
您需要将 NSLayoutAttributeNotAnAttribute
更改为 NSLayoutAttributeHeight
并将 toItem
更改为 self.view.superview
或您想要将其绑定到的任何 view
... 并更改812
到 0.0
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view.superview
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0.0]];
不过我会问... self.view
是 viewControllers
view
吗?你不需要以任何方式设置它的 frame
......除非包含 viewController
它应该自动占据整个屏幕,因为它是 bounds
做这些检查
rootViewController
的画框是AppDelegate
的didFinishLaunchingWithOptions
中的[[UIScreen mainScreen] bounds]
吗?像这样self.window.rootViewController.view.frame = [[UIScreen mainScreen]bounds];
检查
UIWindow
的框架是否已设置为mainScreen
边界。self.window.frame = [[UIScreen mainScreen] bounds]
通过启用约束错误断点
检查是否有任何自动布局约束被破坏
- 检查开始按钮是否是 ViewController. 主视图的子视图