gpt4 book ai didi

ios - 无法在不同的 iPhone 设备上放置围绕 imageView 的圆形层

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:30 25 4
gpt4 key购买 nike

enter image description here

我该如何解决这个问题?图像在 Storyboard中设置了约束;另一个圆圈是用这些代码行设置的:

let centerY = profileImage.center.y+20+(self.navigationController?.navigationBar.frame.size.height)!
let centerX = profileImage.center.x
let center = CGPoint(x: centerX, y: centerY)
let trackLayer = CAShapeLayer()
let circularPath = UIBezierPath(arcCenter: center, radius: (profileImage.frame.width/2)+2, startAngle: -CGFloat.pi-CGFloat.pi/2, endAngle: CGFloat.pi/2, clockwise: true)
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = Functions.hexStringToUIColor(hex: "#3859B9").cgColor
trackLayer.lineWidth = 3
trackLayer.lineCap = kCALineCapRound
trackLayer.fillColor = UIColor.clear.cgColor
view.layer.addSublayer(trackLayer)

在 iPhone 7 上(右侧)似乎是正确的。

最佳答案

对导航栏或状态栏的高度使用固定值会导致此类错误。您应该根据 ImageView 定位图层。为此,您可以简单地将 ImageView 的框架分配给您的图层:

trackLayer.frame = profileImage.frame

由于布局可能会因多种原因而改变(例如设备旋转),您应该在 View Controller 的 viewDidLayoutSubviews 中执行此操作。

由于图层的框架现在比您的示例中的要小,因此您应该创建中心:

let center = CGPoint(x: profileImage.bounds.midX, y: profileImage.bounds.midY)

关于ios - 无法在不同的 iPhone 设备上放置围绕 imageView 的圆形层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48300683/

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