我正在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
中的单元格对齐?
但是一旦我旋转页面,然后将其向后旋转,它看起来就不一样了。视图的宽度在某种程度上是不同的,并且标签没有相同的间隔。无论我来回旋转多少次,它都会在我关闭应用程序之前永久错位。
您认为发生了什么?我该怎么做才能解决这个问题?我应该尝试将所有内容移动到自动布局和添加约束,还是有更简单的解决方案?