UICollectionView 宽度以编程方式与故事板初始化冲突
UICollectionView width programatically conflicting with storyboard initialization
我通过storyboard创建了一个UICollectionView,并临时定位在view中;但是,我想在启动时以编程方式覆盖这些位置,而不是使用故事板配置。
我认为 viewDidLoad()
是进行此更改的正确位置?
Swift2码:
override func viewDidLoad() {
super.viewDidLoad()
collectionView.dataSource = self
collectionView.delegate = self
collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "collectionCell")
collectionView.backgroundColor = UIColor(white:1, alpha:0.0)
// Doesn't stretch the width to the device's width on launch. :-(
collectionView.frame.size = CGSize(width: UIScreen.mainScreen().bounds.width, height: 200)
}
如果您正在设置约束,然后想要更改 height
或 width
,那么您应该使用那个高度或宽度的出口并增加它的常量值。只需按住 ctrl 并从宽度约束拖动到 class 并制作 outlate,然后在 viewdidload
.
中增加该 outlate 的常数 属性
例如,
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
self.heightConstraint.constant = 200
第二件事,如果您想让 collectionview 的高度与设备相同,则无需以编程方式进行设置。如果您设置了适当的约束,自动布局会管理它。所以要点是在任何地方使用自动布局或根本不使用。不要混合使用自动布局,然后以编程方式设置框架。
希望这会有所帮助:)
我通过storyboard创建了一个UICollectionView,并临时定位在view中;但是,我想在启动时以编程方式覆盖这些位置,而不是使用故事板配置。
我认为 viewDidLoad()
是进行此更改的正确位置?
Swift2码:
override func viewDidLoad() {
super.viewDidLoad()
collectionView.dataSource = self
collectionView.delegate = self
collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "collectionCell")
collectionView.backgroundColor = UIColor(white:1, alpha:0.0)
// Doesn't stretch the width to the device's width on launch. :-(
collectionView.frame.size = CGSize(width: UIScreen.mainScreen().bounds.width, height: 200)
}
如果您正在设置约束,然后想要更改 height
或 width
,那么您应该使用那个高度或宽度的出口并增加它的常量值。只需按住 ctrl 并从宽度约束拖动到 class 并制作 outlate,然后在 viewdidload
.
例如,
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
self.heightConstraint.constant = 200
第二件事,如果您想让 collectionview 的高度与设备相同,则无需以编程方式进行设置。如果您设置了适当的约束,自动布局会管理它。所以要点是在任何地方使用自动布局或根本不使用。不要混合使用自动布局,然后以编程方式设置框架。
希望这会有所帮助:)