在IB中我有一个Scrollview(用于水平滚动和分页),使用垂直和水平居中的自动布局,占据设备的整个宽度,高度为65.在我的viewDidLoad中,我调用下面的方法使用三个标签填充滚动视图,并且理想地希望每个标签占据设备的整个宽度,使得每个滚动页面具有占据滚动视图的整个宽度的标签。我很好奇如何摆脱用于标签x位置的幻数,以便我可以考虑所有设备宽度。我认为将label2的x位置设置为scrollview.frame.size.width会导致第二个标签从屏幕的右边缘开始,但事实并非如此,我不明白为什么。过去一周我一直坚持这一点,非常感谢任何帮助。我正在使用Xcode 6.1
func generateScrollView() {
var label1 = UILabel()
label1.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)
label1.text = "Label 1"
label1.textColor = UIColor.whiteColor()
label1.font = UIFont(name: "HelveticaNeue-Thin", size: 40.0)
label1.backgroundColor = UIColor.greenColor()
var label2 = UILabel()
label2.frame = CGRectMake(320, 0, scrollView.frame.size.width, scrollView.frame.size.height)
label2.text = "Label 2"
label2.textColor = UIColor.whiteColor()
label2.font = UIFont(name: "HelveticaNeue-Thin", size: 40.0)
label2.backgroundColor = UIColor.redColor()
var label3 = UILabel()
label3.frame = CGRectMake(640, 0, scrollView.frame.size.width, scrollView.frame.size.height)
label3.text = "Label 3"
label3.textColor = UIColor.whiteColor()
label3.font = UIFont(name: "HelveticaNeue-Thin", size: 40.0)
label3.backgroundColor = UIColor.yellowColor()
scrollView.contentSize = CGSize(width: 960.0, height: scrollView.frame.size.height)
scrollView.pagingEnabled = true;
scrollView.addSubview(label1)
scrollView.addSubview(label2)
scrollView.addSubview(label3)
}
答案 0 :(得分:1)
将generateScrollView()
放入viewDidAppear(animated: Bool)
方法,而不是viewDidLoad()
为我做了诀窍。
要使标签填充设备的宽度,请使用scrollView框架的宽度,如下所示:
label1.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)
现在,您可以将以下标签的x值设置为滚动视图宽度的倍数,以便标签从设备的右边缘开始。
label2.frame = CGRectMake(scrollView.frame.size.width * 2, 0, scrollView.frame.size.width, scrollView.frame.size.height)
如果您尝试将标签置于滚动视图的每个页面中心,请使用:label.textAlignment = NSTextAlignment.Center
。这种定心方法不适用于viewDidLoad()
。