如何在 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:为自定义视图添加 Tap

如何在swift中将标题视图添加到每个自定义tableViewCells

如何在 Swift 中将值从自定义单元格设置/传递到视图控制器

如何在swift ios中将多个图像添加到自定义表格视图单元格?

Swift之深入解析如何将代码添加为自定义LLDB命令