如何根据设备屏幕尺寸转换帧?

时间:2016-03-11 13:48:42

标签: ios objective-c iphone autolayout constraints

我正在开发一个动态应用,我在其中为视图中的每个UI对象从Web服务中单独获取CGRect(x,y,width,height)值

在服务器上,他们会根据以下尺寸(1080 x 1920)设置框架,所以,如果我得到CGRect以下值:(200,20,100,100)那么它应该根据设备大小和服务器指定的大小适合设备。

  
      
  1. 因此,对于iPhone 5的情况 - 新的框架将是相同的200,20,100,100。

  2.   
  3. 因此,对于iPhone 6(375 x 667)的情况 - 新的框架将是?

  4.   
  5. 因此,对于iPhone 6+(414 x 736)的情况 - 新的框架会是什么?

  6.   

主要的是,无论在特定用户界面对象的应用程序框架中收到什么框架,它都应该与管理面板中的边框完全一样,特别是对于边距。

注意事项,

  

我只在故事板中使用AutoLayout设置UI。

有什么建议吗?

这是一个例子:

示例1:

|  _________________  |
| |                 | |
| |                 | |
| |                 | |
| |                 | |
| |_________________| |
|                     |

示例2:

|          _________  |
|         |         | |
|         |         | |
|         |         | |
|         |         | |
|         |_________| |
|                     |

通过上面的例子,我试图解释一下,无论来自服务器的帧是什么,如果在服务器上看起来如此,类似的将在设备上,但它应该基于设备{{ 1}}。

3 个答案:

答案 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)

enter image description here
具有屏幕分辨率的屏幕比例我从This Website.开始 Screen ratio

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

其他值相同

如果使用自动布局,则必须在收到新值后更新约束。