下面我列出了一些代码供您结账.我正在尝试自定义UIView并添加另一个自定义子视图.这个子视图应该以这样的方式约束到父视图,它基本上只是在相同的维度上放置,而父级只是作为包装器.
NSLayoutConstraint到目前为止,我已尝试使用和失败的悲惨.视图从未真正显示出来.我有一个left,right,bottom和top约束,它应与父视图对齐.
第一个问题是,有人请在使用以下方法时解释或纠正我的逻辑.我想到的项目参数是你想为(customViewChild)设置约束的实际视图.该属性是说我希望my的左边缘customViewChild用于此约束.在relatedBy看起来很简单的,虽然我可能是错的,最后的toItem指向自我这是我CustomViewParent这也有一个.left属性地说,我希望我的孩子和家长的左边缘对齐.这个逻辑有缺陷还是我做错了什么?
NSLayoutConstraint(item: customViewChild!,
attribute: .left,
relatedBy: .equal,
toItem: self,
attribute: .left,
multiplier: 1.0,
constant: 0.0)
Run Code Online (Sandbox Code Playgroud)
我知道下面的例子很容易用IB完成,但我想了解NSLayoutConstraint,所以请提供相关答案.最后,如果有人能够真正纠正这个代码,那么我有一个有效的例子,那将是非常棒的.
class CustomViewParent: UIView {
var customViewChild: UIView?
override init(frame: CGRect) {
super.init(frame: frame)
setConstraints()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setConstraints()
}
func setConstraints() {
customViewChild = UIView()
addSubview(customViewChild!)
customViewChild?.translatesAutoresizingMaskIntoConstraints = false
let leftConstraint = NSLayoutConstraint(item: customViewChild!,
attribute: .left,
relatedBy: .equal,
toItem: self, …Run Code Online (Sandbox Code Playgroud) 我有一个自定义视图,我已经实现了,我正在尝试学习如何使用自动布局而不使用故事板.我的问题是我需要用框架初始化我的视图,还是我可以只做一个空的init然后使用自动布局让视图自己计算出宽度和高度?下面你会看到我已经尝试添加框架,然后把自动布局认为我必须首先放置一个框架,然后自动布局更改它.
let origin = CGPoint(x: 0.0, y: 0.0)
let size = CGSize(width: view.frame.width, height: 44.0)
let frame = CGRect(origin: origin, size: size)
customView = ExpandableHeadingView(frame: headingFrame)
customView.frame.size.height = 44.0
view.addSubview(customView)
view.topAnchor.constraint(equalTo: customView.topAnchor).isActive = true
view.leftAnchor.constraint(equalTo: customView.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: customView.rightAnchor).isActive = true
view.heightAnchor.constraint(equalTo: customView.heightAnchor).isActive = true
Run Code Online (Sandbox Code Playgroud) 下面我附上了一张uitableview的图片我正在使用numberOfRowsInSection返回,data.count但是显示的行数多于计数,我只有一个部分.那么为什么额外的行出现了呢?如果我有一个tableview作为主要内容视图的唯一子视图我没有这个问题,但我在视图层次结构中与uitableview在同一级别上有另一个视图.