我正在制作自定义CollectionViewCell
,到目前为止一直很好。
UICollectionView
上使用UIViewController
的故事板。UICollectionViewCell
,其中包含单元格的布局详细信息。<小时/> 的目的
<小时/> 的问题
1)我认为它与Autolayout
有关,但我不想将其关闭,因为我需要它用于项目的其余部分。
2)请参考以下代码:
- (void)layoutSubviews
{
[super layoutSubviews];
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
_collectionLabel.frame = CGRectMake(20, 100, 280, 40);
_collectionLabel.textColor = [UIColor blueColor];
_collectionLabel.backgroundColor = [UIColor clearColor];
}
else
{
_collectionLabel.frame = CGRectMake(20, 20, 280, 40);
_collectionLabel.textColor = [UIColor redColor];
_collectionLabel.backgroundColor = [UIColor clearColor];
}
}
现在除了UILabel
的框架没有改变外,所有关闭上面的代码都有效。
如果我为项目关闭Autolayout
,那么它确实有效。
当旋转设备时,我需要调整上面的代码以便单元格获取帧更改? 其他一切都有效 - 这是唯一的问题。 一旦我完成这项工作,我就可以生产其余的细胞。
答案 0 :(得分:0)
使用自动布局时,不应设置任何帧。相反,您应该调整约束,或者在某些情况下,删除一些约束并添加其他约束。最简单的方法是将IBOutlet设置为IB中的约束,然后在代码中修改它们的常量值(具体而言,常量值是可以更改的约束的唯一参数)。从您的问题中不清楚,您尝试更改哪个帧参数,但是说您有一个名为leftCon的约束的出口,您可以像这样更改它,
self.leftCon.constant = 20;