ios - 自定义视图未正确显示
问题描述
我试图在 iOS 屏幕中显示 3 个自定义视图,但只有一个显示。第二个在放了很多之后开始以不正确的方式出现constraints
,第三个完全没有出现。为了测试,我三次调用相同的视图。查看代码。我刚刚开始做 iO,所以如果我犯了任何错误或明显错误,请原谅我。
我试图相应地设置约束,在后面放置一个滚动视图,但这些似乎都不起作用
我有卸妆容器 3,storyboard
因为当我添加它时,容器 2 甚至没有出现一点点。请帮我解决这个布局问题。
class TestCustomViewController: UIViewController {
@IBOutlet weak var container : UIView?
@IBOutlet weak var container2 : UIView?
@IBOutlet weak var container3 : UIView?
var testView: CustomView!
var testView2: CustomView!
var testView3: CustomView!
override func viewDidLoad() {
super.viewDidLoad()
////////First View//////
testView = createGearItemView()
testView.frame = (container?.frame)!
container?.addSubview(testView)
/////////Second View//////
testView2 = createGearItemView()
testView2.frame = (container2?.frame)!
container2?.addSubview(testView2)
////// THird View/////////
testView3 = createGearItemView()
testView3.frame = (container3?.frame)!
container3?.addSubview(testView3)
}
func createGearItemView () -> CustomView {
let view = (Bundle.main.loadNibNamed("CustomView", owner: nil, options: nil)?.first as? CustomView)!
view.backgroundColor = UIColor.clear
return view
}
}
解决方案
除了您应该熟悉 Auto Layout(请参阅了解 Auto Layout)之外,您必须将容器的bounds
asframe
用于您的子视图(尽管它可能还不是正确的viewDidLoad
):
testView.frame = (container?.bounds)!
...
更好的方法是为您的子视图使用自动布局,而不是frame
直接设置 s:
testView = createGearItemView()
container?.addSubview(testView)
testView.translatesAutoresizingMaskIntoConstraints = false
testView.topAnchor.constraint(equalTo: container!.topAnchor).isActive = true
testView.leadingAnchor.constraint(equalTo: container!.leadingAnchor).isActive = true
testView.bottomAnchor.constraint(equalTo: container!.bottomAnchor).isActive = true
testView.trailingAnchor.constraint(equalTo: container!.trailingAnchor).isActive = true
testView2...
推荐阅读
- java - 如何通过实例化一个类并将该类设置为其数据类型来初始化变量?
- java - 为什么我的程序在 Eclipse 中启动而不是作为 jar 文件启动?
- python - 如何在 django 的日期时间中分隔 HH 和 MM
- python - 不同pybind11的类型转换选项有什么区别?
- c++ - 改变向量内变量的值不会改变它在向量外的值
- javascript - Nativescript - 将不安全的文本设置为标签
- python - python - 根据第一个元素合并列表
- python - Django模型FloatField错误'float'对象没有属性'as_tuple'
- php - 我的系统的 Laravel 一对多关系
- google-sheets - 使用 google 表格查询来确定每个月 Id 离线的天数