如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT

How to add a custom uiview to a view controller programmatically SWIFT

我正在尝试以编程方式将自定义视图添加到我的视图控制器。我使用了这段代码,但没有成功出现在我的主视图控制器前面。

 var DynamicView = CustomFilter()
    DynamicView.setTranslatesAutoresizingMaskIntoConstraints(false)



    self.view.addSubview(DynamicView)

自定义过滤器 Class:

import UIKit

class 自定义过滤器:

UIView {
@IBOutlet weak var party: UIButton!
@IBOutlet weak var outdoors: UIButton!
@IBOutlet weak var sports: UIButton!
@IBOutlet weak var diner: UIButton!
@IBOutlet weak var music: UIButton!
@IBOutlet weak var gaming: UIButton!

}

自定义过滤器已连接到 xib 文件。

Xib 文件:

自定义视图是否有可能放错位置?我不确定我做错了什么。

它可能是零高度和零宽度,也可能在屏幕外。

您需要为其设置高度和宽度约束以及 x 和 y 位置约束。

您可能还应该使用 CustomFilter(frame: someFrameRect),因为我记得 initWithFrame 是 UIView 的指定初始化程序。

顺便说一句,变量名应该以小写字母开头,所以 DynamicView 应该是 dynamicView

为了使用我们在xib中设计的视图,我们大部分都是从xib中加载。

if 
    let bundle = NSBundle(forClass: CustomFilter.self),
    let nib = bundle.loadNibNamed("<#Xib File Name#>", owner: self, options: nil),
    let dynamicView = nib.first as? CustomFilter {

        self.view.addSubview(dynamicView)
}

另一种方法是编写您的 CustomFilterinit 以从 xib 本身加载视图。

更清楚的是,您遇到的问题是 CustomFilter 的初始化程序中的 none 会关心您创建的 xib 文件,除非您编写并告诉他们关心关于它。您当前的代码正在返回一个 0x0 视图,其背景可能为白色或清晰。如果您修改当前代码以将 CustomFilter 的框架设置为 0x0 以外的其他大小并将背景颜色设置为类似 UIColor.greenColor() 的其他内容,您会一目了然。

此外,您可以使用 Xcode 的可视化调试器来找到它。