gpt4 book ai didi

swift - UISlider handle 在不同尺寸的 iPad 上改变宽度

转载 作者:行者123 更新时间:2023-11-28 06:26:27 24 4
gpt4 key购买 nike

我有一个垂直 slider ,它使用以下代码在其自定义类中生成 handle 图像:

func generateHandleImage(with color: UIColor) -> UIImage {


let rect = CGRect(x: 0, y: 0, width: (superview?.bounds.size.height)! * 0.07,
height: (superview?.bounds.size.width)!)


return UIGraphicsImageRenderer(size: rect.size).image { (imageContext) in
imageContext.cgContext.setFillColor(color.cgColor)
imageContext.cgContext.fill(rect.insetBy(dx: 0, dy: 0))
}
}

我已经在 IB 中为 slider 设置了自动布局约束,使其以 super View 的 x 和 y 轴为中心,并且宽度和高度与其 super View 的高度和宽度相等(因为它是一个垂直 slider )。

这是使我的 slider 垂直并调用生成 handle 图像的函数的代码:

// Make Sliders Vertical
let sliderTransform = CGAffineTransform(rotationAngle: CGFloat(M_PI_2) + CGFloat(M_PI))
pitchBendSlider.transform = sliderTransform

pitchBendSlider.setThumbImage(pitchBendSlider.generateHandleImage(with: .white), for: .normal)

我希望句柄图像与其父 View 的宽度相等。它在 iOS 模拟器中的 iPad Air 2 上正确执行此操作,但在 iPad Pro 12.9"上它大约是 super View 宽度的 80-90%,而在 iPad Air 上它略大于 super View 的宽度。

如何使自定义 slider 的图像句柄的宽度等于它在所有 iPad 尺寸上的 super View 的宽度?

最佳答案

通过反复试验,我发现这是一个“时间问题”。在 viewDidLoad 中绘制句柄图像 rect 的时间过早。

我的“黑客”解决方案是将绘制 slider handle 的函数放入按钮操作函数中,该函数调用显示 View (其中有垂直 slider )。

添加时间延迟可能会同样解决问题。两者都是 hack 解决方案,我仍然不明白为什么在包含垂直 slider 的 VC 中调用 viewDidLoad 之前无法识别正确的屏幕尺寸...

然而,这解决了问题。

关于swift - UISlider handle 在不同尺寸的 iPad 上改变宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41734256/

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