我正在开发自动布局和启用大小类的项目。我试图调整UICollectionViewCell宽度,以确保它适合整个屏幕。
code:
screenSize = UIScreen.mainScreen().bounds
screenWidth = screenSize.width
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
recentCollection.collectionViewLayout.invalidateLayout()
return CGSizeMake(screenWidth, 200.0)
}
我不知道我是在正确的方式工作吗?任何帮助赞赏。谢谢提前
答案 0 :(得分:0)
只需将UICollectionView的宽度设置为0并在viewdidload()方法中更新约束
screenSize = UIScreen.mainScreen().bounds
screenWidth = screenSize.width
var Constraint = NSLayoutConstraint(item: recentCollection, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.Width, multiplier: 1.0, constant: screenWidth)
recentCollection.addConstraint(Constraint)
答案 1 :(得分:0)
你可以使用数学技巧而不涉及约束!!!!
您将获得一个单元格=任何设备宽度!
数字1 =项目数!你可以从你的总物品数量中独立调整它到更多或更少的项目在creen !!!例如,iPhone 4上的/(Double(33))将分为4列中的33个项目和每行4个项目!在iPhone 6 Pluse中,您将看到相同的图片单元格将按比例放大4列!
您可以使用此技巧根据屏幕大小或任何自我调整大小的内容视图动态和按比例调整视图和字体大小!
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var deviceSize = UIScreen.mainScreen().bounds.size
var flexCell = sqrt(Double(deviceSize.width * deviceSize.height) / (Double(1)))
return CGSize(width: flexCell , height: flexCell)
}