//view
lazy var mMainView:UIView = {
let mainChars = UIView.init()
mainChars.layer.cornerRadius = 4
mainChars.layer.borderColor = RGBACOLOR(r: 0, 0, 0, a: 0.09).cgColor
mainChars.backgroundColor = .red
mainChars.layer.borderWidth = 0.5
return mainChars
}()
//约束
self.view.addSubview(mScrollView)
mScrollView.addSubview(mMainView)
mMainView.snp.makeConstraints { (make) in
make.top.equalTo(mYykb.snp.bottom).offset(15)
make.left.equalTo(mScrollView.snp.left).offset(15)
make.right.equalTo(mScrollView.snp.right).offset(-15)
make.height.equalTo(X_Height(height: 170))
}
问题:
run起来后,死活看不到view,view不显示
原因:
因为UIscrollview的top、leading、trailing、bottom是根据自己的contentSize来确定的,而不是bounds。
但是contentSize又是根据子视图决定的。因此,上面的代码就会导致添加上去的view宽高都是0,view的四边都是依据contentSize确定,但是contentSize又不确定。这就导致scrollorView上面的子视图不显示,子视图上面的点击事件不响应等问题。
解决方法:
我的scroller是和self.view等宽。我就直接用
make.left.equalTo(self.view.snp.left).offset(15)
make.right.equalTo(self.view.snp.right).offset(-15)
或者:
先在scrollorView上添加一个view。设置edges。并且,如果要垂直滚动的话,设置宽度约束,要横向滚动设置高度约束。 然后所有子控件都添加到这个view上去就好了。
网友评论