如何在 Swift 中将内容包装为自定义视图
Posted
技术标签:
【中文标题】如何在 Swift 中将内容包装为自定义视图【英文标题】:how to wrap content a custom view in Swift 【发布时间】:2018-07-29 11:45:56 【问题描述】:我创建了一个包含一些子视图的 xib 文件。我为子视图设置了欣赏宽度和高度。
有继承UIView
的类。这个类名是CustomUIView
。然后我将此类设置为该 xib 文件的文件所有者。
现在我想将此 xib 文件添加到情节提要中的视图控制器。所以我添加了一个 UIView 并将其类设置为CustomUIView
。
但我必须为这个视图设置宽度和高度。我设置了领先和最高约束。但我希望根据子视图的高度和宽度设置它的高度和宽度。
我该怎么做呢
【问题讨论】:
设置前导和尾随约束以确定宽度。设置顶部和底部约束以确定高度。请阅读有关自动布局的信息 @user1046037 谢谢。但我在自定义视图的子视图中设置了这些,我不想再次设置它们。 【参考方案1】:如果您已经在 xib 中为每个元素设置了宽度和高度锚点,则不必为视图设置宽度和高度
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let v = (Bundle.main.loadNibNamed("hhhh", owner: self, options: nil))?[0] as! hhhh;
view.addSubview(v)
v.translatesAutoresizingMaskIntoConstraints = false
v.topAnchor.constraint(equalTo:self.view.topAnchor,constant:30).isActive = true
v.leadingAnchor.constraint(equalTo:self.view.leadingAnchor,constant:30).isActive = true
结果
【讨论】:
谢谢。确切地。我需要它这样做。但是当我设置点击手势识别器时,只有当我分配宽度和高度时它才有效。否则它不起作用。并且自动布局显示错误,它需要该视图的宽度和高度以上是关于如何在 Swift 中将内容包装为自定义视图的主要内容,如果未能解决你的问题,请参考以下文章
为自定义包装器视图添加示例视图到 PreviewProvider
如何在swift中将标题视图添加到每个自定义tableViewCells
如何在 Swift 中将值从自定义单元格设置/传递到视图控制器