我正在开发一个动态应用,我在其中为视图中的每个UI对象从Web服务中单独获取CGRect
(x,y,width,height)值
在服务器上,他们会根据以下尺寸(1080 x 1920)设置框架,所以,如果我得到CGRect
以下值:(200,20,100,100)那么它应该根据设备大小和服务器指定的大小适合设备。
因此,对于iPhone 5的情况 - 新的框架将是相同的200,20,100,100。
因此,对于iPhone 6(375 x 667)的情况 - 新的框架将是?
- 醇>
因此,对于iPhone 6+(414 x 736)的情况 - 新的框架会是什么?
主要的是,无论在特定用户界面对象的应用程序框架中收到什么框架,它都应该与管理面板中的边框完全一样,特别是对于边距。
注意事项,
我只在故事板中使用AutoLayout设置UI。
有什么建议吗?
这是一个例子:
示例1:
| _________________ |
| | | |
| | | |
| | | |
| | | |
| |_________________| |
| |
示例2:
| _________ |
| | | |
| | | |
| | | |
| | | |
| |_________| |
| |
通过上面的例子,我试图解释一下,无论来自服务器的帧是什么,如果在服务器上看起来如此,类似的将在设备上,但它应该基于设备{{ 1}}。
答案 0 :(得分:2)
根据屏幕尺寸和比例改变iPhone 4s,5,6,6 +。
在这里你需要通过屏幕更改帧大小,这里你有“基于以下尺寸的帧(1080 x 1920)”这意味着你现在有iPhone 6+帧看到下面的图像集基于宽高比。
1)。 iPhone 5机架(200,20,100,100)
2)。 iPhone 6机架(200,20,155,155)
3)。 iPhone 6+框架(200,20,194,194)
具有屏幕分辨率的屏幕比例我从This Website.开始
imgur。com / 7zi1q.png
答案 1 :(得分:1)
您可以使用这两种方法来获取服务器和设备特定CGRect
。
- (CGFloat) convertServerXorWidthValueToDeviceValueXorWidth:(CGFloat)sValue {
CGFloat currentWidth = [UIScreen mainScreen].bounds.size.width;
CGFloat value = ceilf((currentWidth * sValue) / 1080);
return value;
}
- (CGFloat) convertServerYorHeightValueToDeviceValueYorHeight:(CGFloat)sValue {
CGFloat currentHeight = [UIScreen mainScreen].bounds.size.height;
CGFloat value = ceilf((currentHeight * sValue) / 1920);
return value;
}
希望这会对你有所帮助。
答案 2 :(得分:0)
我认为iPhone 6的框架为(234,23,117,117),iPhone 6 Plus为(258,25,129,129)。
我是如何计算的? 新宽度=(旧宽度*新设备宽度)/旧设备宽度
(100 * 375)/ 320 = 117
其他值相同
如果使用自动布局,则必须在收到新值后更新约束。