我遇到了一些我创建的UIView和UITableView的问题。当我在故事板界面构建器上缩放UIView和UITableView时,它看起来很好并且适合屏幕。当我在iPhone 6plus上运行它时,它看起来也很好,非常完美。但是,当我在iOS模拟器上运行它或插入的iPhone 4时,它似乎超出了屏幕范围。我是新手,所以我不确定如何设置它们的约束,使它们适合屏幕的宽度或按比例缩放。这是一张它看起来像的图像:
同样,我只是不确定如何使它们适合屏幕宽度,并且非常欣赏正确方向的轻推。
答案 0 :(得分:0)
因此有两种方法适合不同的屏幕:
使用自动布局,使高度和宽度限制等于屏幕宽度和高度。
手动设置您的UIView的框架或边界,使用[UIScreen mainScreen] bounds]
获取您的应用程序运行的设备屏幕大小,并为您的视图指定大小。
两种方式都可以。但我建议你先从故事板中使用自动布局
答案 1 :(得分:0)
您需要明确地为视图添加约束;如果不这样做,系统会为您添加它们,它们通常不是您想要的(它增加了顶部,左侧,宽度和高度限制)。您的视图应该对superview的前导和后沿(控制器的self.view)有约束,使它们成为任何设备上屏幕的宽度。您还需要垂直约束才能将UIView和UITableView正确放置在图像中显示的位置。
答案 2 :(得分:0)
您对如何解决此问题的怀疑是正确的。自动布局(又名约束)是允许iOS应用调整界面以适应任何大小的屏幕的技术。
自动布局可能是一个很大的话题,所以我不会尝试在这个答案中教它。相反,这是Apple文档:
这是我写的一篇博文,可能有助于您理解基本概念:
https://bradbambara.wordpress.com/2014/03/15/auto-layout-concepts-in-ios/
答案 3 :(得分:0)
您可以通过两种方式来完成这项工作。
1st:使用Autolayout contraints
2nd:手动/编程((DEVICE_WIDTH) - ((MARGIN) * 2))
样本进行手动计算......
如果您需要此功能,请确定您的应用设备正在运行[UIScreen mainScreen] bounds].size
以获取屏幕尺寸..;)
BOOL isIPhone = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone);
BOOL isIPhone5 = ([[UIScreen mainScreen] bounds].size.height == 568);
//BOOL isIPhone6 = ([[UIScreen mainScreen] bounds].size.height == 667.0);
//BOOL isIPhone6P = ([[UIScreen mainScreen] bounds].size.height == 736.0);
BOOL isIPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);