gpt4 book ai didi

ios - 在 Swift 中创建相同 View 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 12:27:23 26 4
gpt4 key购买 nike

有时我需要在 Swift 中创建相同的 View (或 ImageView)。

例如,制作相同的尺寸和图像,删除 View ,然后再次制作(有时会更改 View 的图像或尺寸)。

在这种情况下,当然每次都编写相同的代码来需要 View 是不好的。所以我想找到多次创建相同 View 的好方法。

现在我在创建相同的 ImageView 时使用此代码。

*CreateImage.swift

class aImageView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)

let aImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 70, height: 50))
aImageView.image = UIImage(named: "item_a01_70x50")
aImageView.tag = 100
aImageView.isUserInteractionEnabled = true
aImageView.backgroundColor = UIColor.lightGray
self.addSubview(aImageView)

}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}

}

class bImageView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)

let bImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 70, height: 50))
bImageView.image = UIImage(named: "item_b02_70x50")
bImageView.tag = 200
bImageView.isUserInteractionEnabled = true
bImageView.backgroundColor = UIColor.lightGray
self.addSubview(bImageView)

}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}

}

*TopView.swift

    class TopView: UIView {

var aview: aImageView!
var bview: bImageView!

init(frame: CGRect, stage:Int){
super.init(frame: frame)

aview = aImageView(frame :CGRect(x: 0, y: 0, width: 70, height: 50))
self.addSubview(aview)

bview = bImageView(frame :CGRect(x: 100, y: 100, width: 70, height: 50))
self.addSubview(bview)

//...and sometimes delete them, create them again other time, and create...

}
}

如果你知道更好的方法,可以告诉我吗?

谢谢。

最佳答案

我认为你可以像这样扩展UIImageView:

extension UIImageView {
convenience init(_imageName: String = "",
_frameTulpe: (x: CGFloat, y: CGFloat, w: CGFloat, h: CGFloat) = (0, 0, 0, 0),
_tag: Int = 0,
_isUserInteractionEnabled: Bool = true,
_backgroundColor: UIColor = UIColor.lightGray)
{
self.init(image: UIImage(named: _imageName))

frame = CGRect(x: _frameTulpe.x, y: _frameTulpe.y, width: _frameTulpe.w, height: _frameTulpe.h)
tag = _tag
isUserInteractionEnabled = _isUserInteractionEnabled
backgroundColor = _backgroundColor
}
}

然后,在您的 TopView.swift 中将是:

class TopView: UIView {

var aview: aImageView!
var bview: bImageView!

init(frame: CGRect, stage:Int){
super.init(frame: frame)

aview = UIImageView(_imageName: "item_a01_70x50", _frameTulpe:(0, 0, 70, 50), _tag: 100)
self.addSubview(aview)

bview = UIImageView(_imageName: "item_b02_70x50", _frameTulpe:(100, 100, 70, 50), _tag: 200)
self.addSubview(bview)

//...and sometimes delete them, create them again other time, and create...

}
}

关于ios - 在 Swift 中创建相同 View 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014807/

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