gpt4 book ai didi

swift - 如何以编程方式将图像放入 SegmentController - Swift

转载 作者:行者123 更新时间:2023-11-28 05:57:56 25 4
gpt4 key购买 nike

我需要在 SegmentController - Swift 中设置图像。

    let testTypeSegmentedControl: UISegmentedControl = {

let types = [“Green”, “Blue”] // v_concreteSelectedIndex
let sc = UISegmentedControl(items: types)
sc.setImage((UIImage(named: "Green_Main.png")), forSegmentAt: 0)

sc.selectedSegmentIndex = 0
sc.translatesAutoresizingMaskIntoConstraints = false
sc.tintColor = .black

return sc
}()

如何在段 Controller 中正确修复图像。

我试过:

sc.contentMode = .scaleAspectFill

但似乎效果不佳。

我尝试使用约束,但我不知道该怎么做。

任何建议如何进行?

最佳答案

结果不是您所期望的,因为您使用的原始 .png 图像的分辨率更高。您永远不应该使用“大”图像来仅显示一个小图片。整个图像将加载到内存中,并且只会显示其像素的 10%,因此您将白白占用大量内存。

如果你真的想使用这个资源,你可以做的是用之前的代码创建一个新的图像,并使用这个新生成的图像。

下面的方法返回一个新的图像,你可以在你的 UISegmentedControl 中使用,你可以释放大的。

func image(with image: UIImage?, scaledTo newSize: CGSize) -> UIImage? {
UIGraphicsBeginImageContext(newSize)
image?.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
let newImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}

在您的代码中:

    let testTypeSegmentedControl: UISegmentedControl = {
let sc = UISegmentedControl(items: ["One", "Two"])
sc.selectedSegmentIndex = 0
sc.translatesAutoresizingMaskIntoConstraints = false
return sc
}()


override func viewDidLoad() {

super.viewDidLoad()
self.view.addSubview(testTypeSegmentedControl)

let newImage = image(with: (UIImage(named: "watermelon.png")), scaledTo: CGSize(width: 32, height: 30))
testTypeSegmentedControl.setImage(newImage , forSegmentAt: 0)

}

关于swift - 如何以编程方式将图像放入 SegmentController - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50887434/

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