带有分页的水平滚动视图中的全宽标签

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()

【讨论】:

以上是关于带有分页的水平滚动视图中的全宽标签的主要内容,如果未能解决你的问题,请参考以下文章

在启用分页的情况下将表格视图添加到滚动视图。

IOS:带有随机分页的scrollView

将带有分页的 UIScrollView 添加到现有的 UIViewController

在启用分页的情况下检测滚动视图中的 y 偏移量何时发生变化

表格视图中的滚动视图分页

具有滚动效果的页面视图控制器与启用分页的 UIScrollView