如何在运行时使用不同的自定义UIView类在viewController中更改自定义视图?我的代码段如下所示,但没有更改自定义视图。
class BaseView: UIView {
}
class view1: BaseView {
}
class view2: BaseView {
}
class MyViewController: UIViewController {
var customView: BaseView?
init() {
customView = view1()
}
@objc changeView() {
customView = view2()
self.customView.setNeedsDisplay()
}
}
答案 0 :(得分:0)
从父视图(在我的情况下为堆栈视图)中删除旧的customView并将新的初始化的自定义视图添加到stackView即可。
答案 1 :(得分:0)
新的自定义视图不可见,因为您没有将其添加到视图控制器视图层次结构中
当您调用addArrangedSubview时,堆栈视图会自动添加此视图,而常规视图则不会
如果使用约束,则应使用代码重新创建
尝试
@objc func changeView() {
let newView = view2()
newView.frame = customView.frame
customView.superview?.addSubview(newView)
customView.removeFromSuperview()
customView = newView
self.customView.setNeedsDisplay()
}