带有分页的水平滚动视图中的全宽标签
Posted
技术标签:
【中文标题】带有分页的水平滚动视图中的全宽标签【英文标题】:Full Width Labels in Horizontal Scrollview with Paging 【发布时间】:2014-11-12 03:49:42 【问题描述】:在 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)
【问题讨论】:
也许 UICollectionView 比 UIScrollView 更适合您。 【参考方案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()
。
【讨论】:
以上是关于带有分页的水平滚动视图中的全宽标签的主要内容,如果未能解决你的问题,请参考以下文章