如何以编程方式将自定义 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)
}
另一种方法是编写您的 CustomFilter
的 init
以从 xib 本身加载视图。
更清楚的是,您遇到的问题是 CustomFilter
的初始化程序中的 none 会关心您创建的 xib 文件,除非您编写并告诉他们关心关于它。您当前的代码正在返回一个 0x0 视图,其背景可能为白色或清晰。如果您修改当前代码以将 CustomFilter
的框架设置为 0x0 以外的其他大小并将背景颜色设置为类似 UIColor.greenColor()
的其他内容,您会一目了然。
此外,您可以使用 Xcode 的可视化调试器来找到它。
我正在尝试以编程方式将自定义视图添加到我的视图控制器。我使用了这段代码,但没有成功出现在我的主视图控制器前面。
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)
}
另一种方法是编写您的 CustomFilter
的 init
以从 xib 本身加载视图。
更清楚的是,您遇到的问题是 CustomFilter
的初始化程序中的 none 会关心您创建的 xib 文件,除非您编写并告诉他们关心关于它。您当前的代码正在返回一个 0x0 视图,其背景可能为白色或清晰。如果您修改当前代码以将 CustomFilter
的框架设置为 0x0 以外的其他大小并将背景颜色设置为类似 UIColor.greenColor()
的其他内容,您会一目了然。
此外,您可以使用 Xcode 的可视化调试器来找到它。