Ios 斯威夫特视图没有出现
我试图在我的主视图上创建一个Ios 斯威夫特视图没有出现,ios,swift,Ios,Swift,我试图在我的主视图上创建一个UITextView,我用textView=UITextView(frame:cgrit(x:10,y:10,width:300,height:300))实现了这一点,但由于某些原因,我无法使用约束实现。以下是我在viewDidLoad()中调用的函数: 这是文本视图: private let textView: UITextView = { let view = UITextView() view.translatesAutoresi
UITextView
,我用textView=UITextView(frame:cgrit(x:10,y:10,width:300,height:300))
实现了这一点,但由于某些原因,我无法使用约束实现。以下是我在viewDidLoad()中调用的函数:
这是文本视图
:
private let textView: UITextView = {
let view = UITextView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
我还是一个非常初学者,但是print(view.subview)
显示textView
是主视图的一个子视图(我猜)
[]
您创建约束,但从不将其设置为活动约束。更改此选项应有助于使其正确显示:
textView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10).isActive = true
textView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
textView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10).isActive = true
textView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10).isActive = true
您也可以使用“SnapKit”
pod“SnapKit”,“~>5.0.0”
您可以执行private lazy var textView:UITextView
,而不是private let textView:UITextView
。延迟实例化UITextView会在需要时加载,而不是在加载视图时加载,这可以提高性能。这是正确的答案,但您可以通过将约束声明包装在NSLayoutConstraint.activate(:)
中来保存一些isActive=true
,它接受一系列约束并将其全部激活。
[<UITextView: 0x7fdf64809600; frame = (0 0; 0 0); text = '';
clipsToBounds = YES; gestureRecognizers = <NSArray: 0x60000062f450>;
layer = <CALayer: 0x60000083b360>; contentOffset: {0, 0}; contentSize:
{0, -8}; adjustedContentInset: {0, 0, 0, 0}>]
textView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10).isActive = true
textView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
textView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10).isActive = true
textView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10).isActive = true
self.addSubView(textView)
textView.snp.makeConstraints { (make) -> Void in
make.top.equalTo(0)
make.bottom.equalTo(0)
make.left.equalTo(0)
make.right.equalTo(0)
}