在 iOS 中调整 UIView 的大小

Posted

技术标签:

【中文标题】在 iOS 中调整 UIView 的大小【英文标题】:Resize UIView in iOS 【发布时间】:2015-03-28 01:58:16 【问题描述】:

我在屏幕上出现部分黑色斑块。它是一个 UIView,这仅在设备处于横向模式时才会发生。在纵向上,它工作得很好。

iPad 2 上的实际截图: (检查黑色补丁)

这是我在 Xcode 中的视图层次结构: (请检查突出显示的 UIView。它是未完全拉伸到设备宽度的 UIView)

作为 ios 开发的新手,我不确定哪里出了问题。这会是因为 self.view 的尺寸错误吗?

这就是我定义self.view

的方式
CGRect deviceDimensions = [[UIScreen mainScreen] applicationFrame];
self.view = [[UIView alloc] initWithFrame:deviceDimensions];

我尝试如下显式设置宽度(仅用于调试):

CGRect deviceDimensions = [[UIScreen mainScreen] applicationFrame];
deviceDimensions.size.width = 768;
self.view = [[UIView alloc] initWithFrame:deviceDimensions];

但它仍然显示相同。

设备:iPad 2 - 屏幕尺寸:1024x768 iOS 8.2 Xcode v6.2

谢谢。

【问题讨论】:

【参考方案1】:

自动布局。这是一个工具的野兽,但需要几分钟才能掌握基础知识。在 IB 中选择视图,并为您的视图添加高度和宽度约束,如下所示:

如果您更喜欢代码,请查看 autoresizingMask 属性:

-(BOOL)shouldAutorotate

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    if (orientation != UIInterfaceLandscape) 
[view.superview setAutoresizesSubviews:YES];
    return YES;
   

【讨论】:

以上是关于在 iOS 中调整 UIView 的大小的主要内容,如果未能解决你的问题,请参考以下文章

iOS UIView drawRect 调整大小动画

UIView 使用自动布局调整大小,但在运行时获取其帧大小不正确 ios

iOS UIView 不调整子视图的大小?

iOS Autolayout 调整标签大小和它们之间的空间

在 UITableView 上方调整 UIView 的大小

UIScrollView 内的 UIView 未在 3,5 英寸屏幕 iOS 上调整大小