viewDidLayoutSubviews旋转时遇到麻烦

时间:2014-08-23 11:45:07

标签: ios swift ios8

我正在iOS 8 / Swift中编写应用程序并在屏幕上显示视图和UICollectionView(下面的屏幕截图)。虽然我使用自动布局确保它们居中,但我还要点击viewDidLayoutSubviews()以使我视图中存在的7个标签在整个页面中展开(并手动完成布局。)

更具体地说,我正在做的是尝试将我的uicollectionview中的列除以7(分布在7列中以表示日历中每周的每一天),然后制作视图内部的标签也除以7,因此它们与列匹配以显示一周中的哪一天。我希望列标题就像日历一样。

这是第一次运作良好。你可以在这里看到它:

这是我的代码:

override func viewDidLayoutSubviews()
{
    super.viewDidLayoutSubviews()    
    var labelWidth = (self.view.frame.size.width / 7.0) // view.frame? view.bounds?
    var labelIndex: CGFloat = 0
    var dayHeaders: [UILabel] = [lblSunday, lblMonday, lblTuesday, lblWednesday, lblThursday, lblFriday, lblSaturday]

    //Iterate through each label (day of the week) and change its x position accordingly
    for dayHeader in dayHeaders
    {
        //Loop through each label of the week, and incrementally make it's x position further to the right so it spreads out across each column in my uicollection
        (dayHeader as UILabel).frame = CGRectMake(labelWidth * labelIndex, 0, labelWidth, weekHeaderViews.frame.height);

        //Update the index responsible for helping to change a label's x position
        labelIndex++
    }

    self.view.setNeedsLayout() //these didn't work btw
    self.view.layoutSubviews() //these didn't help btw
} 

请注意一周中每一天的列如何与UICollectionView中的单元格对齐?

但是一旦我旋转页面,然后将其向后旋转,它看起来就不一样了。视图的宽度在某种程度上是不同的,并且标签没有相同的间隔。无论我来回旋转多少次,它都会在我关闭应用程序之前永久错位。

您认为发生了什么?我该怎么做才能解决这个问题?我应该尝试将所有内容移动到自动布局和添加约束,还是有更简单的解决方案?

0 个答案:

没有答案