gpt4 book ai didi

ios - 处理屏幕尺寸的正确方法

转载 作者:行者123 更新时间:2023-11-29 00:18:50 25 4
gpt4 key购买 nike

我大约 8 年前开始为 iOS 开发,几年前又重新投入其中。自从我前段时间开始工作以来,发生了很多变化,尤其是我们现在拥有的屏幕尺寸数量。

现在我正在 Storyboard中为每个屏幕尺寸设计多个 View Controller 。我开始基于我的设备 iPhone 6 Plus 设计屏幕,然后制作具有不同尺寸框架的新 View Controller ,并根据我正在处理的屏幕与我的 iPhone 6 Plus 屏幕之间的百分比差异缩放其 subview 。

这是我的代码,它在点击按钮时运行。它确定用户的屏幕尺寸并显示适当的 View Controller 。

CGRect          screenBounds    = [[UIScreen mainScreen] bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

MyViewController *myViewController;

if (screenBounds.size.width == 320.0 && screenBounds.size.height == 480.0)
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"iPhone4MyViewController"];
else if (screenBounds.size.width == 320.0 && screenBounds.size.height == 568.0)
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"iPhone5MyViewController"];
else if (screenBounds.size.width == 375.0 && screenBounds.size.height == 667.0)
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"iPhone6MyViewController"];
else if (screenBounds.size.width == 414.0 && screenBounds.size.height == 736.0)
myViewController = [storyboard instantiateViewControllerWithIdentifier:@"iPhone6PlusMyViewController"];

// Etc. for iPad's, then present

我的问题是,这是设计和呈现不同尺寸屏幕的合适方式吗?这似乎比我真正应该做的要多得多。

最佳答案

首先,您必须使用自动布局

其次,在使用自动布局时,您会发现无法根据设备尺寸的纵横比设置左/右/上/下距离。

假设您有一个按钮,距离它的父 View 有 40 个距离(前导约束)。您不能使用自动布局根据设备尺寸使用纵横比。

如何解决?

您必须根据设备尺寸以编程方式计算该距离。

像这样创建一些常量。

#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_RATIO_RESPECT_OF_IPHONE_6P (SCREEN_MAX_LENGTH/736.0)

现在,如果您的基本布局是 iphone6Plus,则只需将 SCREEN_RATIO_RESPECT_OF_IPHONE_6P 乘以您的左侧距离(前导约束)。这里的736是iphone 6 plus的高度。

像这样

yourButtonLeftDistance.constant = 30*SCREEN_RATIO_RESPECT_OF_IPHONE_6P

就是这样。您现在支持纵向模式下的所有设备。

关于ios - 处理屏幕尺寸的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com