gpt4 book ai didi

iOS 屏幕坐标和缩放

转载 作者:行者123 更新时间:2023-11-29 01:10:10 26 4
gpt4 key购买 nike

我正在尝试在 CALayer 中的图像之上绘图,但我无法确定绘图在不同尺寸显示器上的显示位置。

func drawLayer(){
let circleLayer = CAShapeLayer()
let radius: CGFloat = 30
let x = Thermo.frame.origin.x
let y = Thermo.frame.origin.y
let XX = Thermo.frame.width
let YY = Thermo.frame.height
print("X: \(x) Y: \(y) Width: \(XX) Height: \(YY)")
circleLayer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 2.0 * radius, height: 2.0 * radius) , cornerRadius: radius).CGPath
circleLayer.fillColor = UIColor.redColor().CGColor
circleLayer.shadowOffset = CGSizeMake(0, 3)
circleLayer.shadowRadius = 5.0
circleLayer.shadowColor = UIColor.blackColor().CGColor
circleLayer.shadowOpacity = 0.8
circleLayer.frame = CGRectMake(0, 410, 0, 192);
self.Thermo.layer.addSublayer(circleLayer)
circleLayer.setNeedsDisplay()
}

在正确的位置绘制了一个圆圈……适用于 iPhone 6s。但是,当封闭的 UIImageView 组件针对较小的设备进行缩放时,显然不会。我添加了 print() 来查看图像大小和位置以及......嗯,它在我在 X 上运行它的每个设备上都完全相同:192.0 Y:8.0 宽度:216.0 高度:584.0 但显然它正在缩放通过 AuoLayout 管理器中的约束。

所以,我的问题是,如果我不能使用封闭 View 的大小和位置,我该如何找出适合不同屏幕尺寸的 radio 和位置,因为它似乎永远不会改变?

这是我开始时在 UIImageView 中尝试绘制的图像。 Base Image我当然会尝试根据来自外部设备的数据为其着色。非常感谢任何建议/示例代码!

最佳答案

CALayer 及其子类,包括。 CAShapeLayer 有一个属性

var contentsScale: CGFloat

来自类引用:

For layers you create and manage yourself, you must set the value of this property yourself based on the resolution of the screen and the content you are providing. Core Animation uses the value you specify as a cue to determine how to render your content.

所以你需要做的是在图层上设置比例,你从 UIDevice 类中获取设备的比例

circleLayer.scale = UIScreen.mainScreen().scale

关于iOS 屏幕坐标和缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856534/

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