【问题标题】:how to set width and height of a UIVIew in pixels?如何以像素为单位设置 UIVIew 的宽度和高度?
【发布时间】:2019-08-06 05:57:45
【问题描述】:

我正在开发一个 ObjectiveC 应用程序,我需要在其中设置 uiview 的宽度和高度(以像素为单位),然后将该 uiview 缩放为等于设备宽度。以像素为单位的宽度和高度值是固定的(比如 900 像素 x 500 像素)。

目前我正在这样做,

    UIScreen* mainScreen = [UIScreen mainScreen];

    CGRect frame = CGRectMake(0, 0, 900.0, 500.0);
    [view setFrame:frame];
    CGFloat valScale = mainScreen.bounds.size.width/900.0;
    [view setContentScaleFactor:valScale];

但这并没有给我想要的值。

我该怎么办?

(P.S) view.frame.size.width 是否返回以像素或点为单位的宽度?

【问题讨论】:

  • 它给出了要点。还有pixel = points x2.
  • 你为什么不用自动布局?
  • @trungduc 如何使用自动布局设置 uiview 的宽度和高度(以像素为单位)??
  • @k_dev 对于您的问题,NSLayoutDimension 类和constraintEqualToConstant: 方法可以帮助您做到这一点。我看到您在下面的答案中提到您希望将视图缩放为等于设备宽度,那么为什么不简单地将视图的宽度设置为等于屏幕宽度?
  • 还有一件事你可能不知道。在 iPad 上,它们具有拆分模式,当应用处于此模式时,窗口的宽度不等于屏幕宽度。

标签: ios objective-c uiview pixel scaling


【解决方案1】:

您可以使用 transform 属性来缩放视图。假设您希望将 UIView 缩放 2 倍,那么您可以使用。

self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);

CGRect 宽度和高度返回点而不是像素。对于 iPhone 6,7 等 2x 设备,一个点具有两个像素,对于 iPhone 6 Plus,7 Plus 等 3x 设备,一个点具有三个像素。

更多细节可以参考thisApple 的文档链接。

【讨论】:

  • 感谢您的快速响应。我想缩放视图等于设备宽度。我不知道它是否是 2 因子缩放。当用户可以使用 ipad 时,将在运行时决定是否需要放大或缩小视图。无论设备是什么,视图都应该等于设备的宽度。
猜你喜欢
  • 2011-12-05
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多