gpt4 book ai didi

ios - 视网膜问题 : how to make UIView to have width exactly 1 of pixel instead of 2 pixels?

转载 作者:技术小花猫 更新时间:2023-10-29 10:42:30 28 4
gpt4 key购买 nike

我知道我们是在点而不是像素上操作,在大多数情况下这很方便,但我需要使 UIView 的高度为 1 像素而不是 2 像素。因此,如果您在 Interaface 构建器中拖放一些 UIView(分隔线),并使其高度为 1px(点),那么它在视网膜屏幕上(在设备和模拟器上)仍然看起来像 2 像素大小的线。

我知道 View 上有 contentScaleFactor 属性,它显示的是视网膜 (2.0f) 还是非视网膜 (1.0f)。看起来这些 View 的值为 1.0f,因此您需要从主屏幕检索该值:

[UIScreen mainScreen].scale; 

这会返回 2.0f。现在,我为这个分隔 View 添加了高度约束,添加了检查 isRetina 并划分线以使其恰好为 1 个像素的方法:

- (void)awakeFromNib{

[super awakeFromNib];

CGFloat isRetina = ([UIScreen mainScreen].scale == 2.0f) ? YES : NO;

if (isRetina) {

self.separatorViewHeightConstraint.constant /= 2;
}
}

这行得通,我只是不确定使用 0.5 值是否是个好主意......

最佳答案

要支持较新的 3x 显示器(例如 iPhone 6+),请使用此代码:

UIScreen* mainScreen = [UIScreen mainScreen];
CGFloat onePixel = 1.0 / mainScreen.scale;
if ([mainScreen respondsToSelector:@selector(nativeScale)])
onePixel = 1.0 / mainScreen.nativeScale;

关于ios - 视网膜问题 : how to make UIView to have width exactly 1 of pixel instead of 2 pixels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21385159/

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