【问题标题】:UIScrollView not paging correct distanceUIScrollView 没有分页正确的距离
【发布时间】:2016-06-10 13:24:59
【问题描述】:

我正在创建一个非常简单的详细视图,顶部有几张用户可以翻阅的图片,底部有一些关于项目名称的详细信息。但是我的滚动视图没有分页到正确的位置,因此:

我的scrollview的框架和它的子视图的框架设置如下:

override func viewDidLoad() {
    super.viewDidLoad()

    self.pictures.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height / CGFloat(2))
    self.pictures.clipsToBounds = false
    let width = pictures.frame.width
    let height = pictures.frame.height



    /*

    let view1 = UIView(frame: CGRectMake(pictures.frame.origin.x, 0, scrollViewWidth, scrollViewHeight))
    let view2 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth, 0, scrollViewWidth, scrollViewHeight))
    let view3 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 2, 0, scrollViewWidth, scrollViewHeight))
    let view4 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 3, 0, scrollViewWidth, scrollViewHeight))

    */

    for index in 0...2 {
        let frame = CGRectMake(width * CGFloat(index), 0, width, height)
        let view = UIView(frame: frame)
        views.append(view)
        pictures.addSubview(view)
    }

    views[0].backgroundColor = UIColor.redColor()
    views[1].backgroundColor = UIColor.blueColor()
    views[2].backgroundColor = UIColor.orangeColor()


    pictures.delegate = self
    pictures.contentSize = CGSizeMake(width * CGFloat(views.count), height)


}

有人对我如何适应这个有任何建议吗?我是否错误地实现了我的滚动视图?

【问题讨论】:

  • 您是否考虑过使用UICollectionView 而不是UIScrollView
  • 如何将幻灯片类型的界面与 UICollectionView 结合起来?
  • UICollectionView 基于UIScrollView,因此有pagingEnabled 它也可以使用它的flowlayout 水平滚动

标签: ios uiscrollview scroll-paging


【解决方案1】:

问题是您试图在viewDidLoad() 函数中访问self.view.frame。在它调用视图的那一刻还没有正确布局。视图框架的大小与您在情节提要中指定的大小相同,可能是 {0, 0, 600, 600}。

解决方案:您可以将页面初始化代码放到viewWillAppear,或者您可以考虑使用自动布局而不是直接操作框架。

【讨论】:

  • 不幸的是,将初始化代码移动到 viewWillAppear 并没有解决问题,尽管这是一个很好的猜测:/
  • 我正在避免自动布局,因为要滚动的视图数量(以及随后滚动视图的内容大小)将取决于上传的图片数量。其中大部分是动态的,所以我决定以编程方式进行
  • viewDidLoad 应该有正确的视图大小,但应该使用具有灵活高度、宽度和左边距的自动调整大小的掩码。 viewWillAppear 也不是布局代码的好地方。
【解决方案2】:

您必须在宽度中添加 +20,因为在 scrollView 中,两个页面之间有一些可用空间。 所以添加 20 可能会解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多