Swift, изменение ширины UICollectionViewCell и UILabel (внутри ячейки) программно
Я установил ширину ячейки (UICollectionViewCell) равной ширине UICollectionView, и я пытаюсь сделать то же самое с UILabel, который включен в эту ячейку. Я думаю, что код ниже объясняет, что именно я пытаюсь достичь. Итак, я прочитал некоторые вопросы здесь, в SO, а также пару уроков, но я все еще не уверен, как мне этого добиться.
В паре вопросов говорилось об использованииcollectionViewLayout
но я действительно изо всех сил пытаюсь использовать его в своем коде. Есть идеи? Спасибо!
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as LocationViewCell
cell.locationLabel.text = "Hello there!"
// Set cell & label width to 100%
let collectionViewWidth = self.collectionView.bounds.size.width
cell.frame.size.width = collectionViewWidth // Works
cell.locationLabel.frame.size.width = collectionViewWidth // Does NOT
Обновление 1Поэтому я добавил следующее:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
// Set cell width to 100%
let collectionViewWidth = self.collectionView.bounds.size.width
return CGSize(width: collectionViewWidth, height: 35)
}
То, что происходит, - то, что, когда представление загружено, ширина UILabel все еще мала. Если я перейду к другому виду, а затем вернусь назад, то это 100%. Так что я должен сделать что-то вviewDidLoad()
право? Я уже используюself.collectionView.reloadData()
но я думаю, что это только для данных.
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("locationCell", forIndexPath: indexPath) as LocationViewCell
cell.locationLabel.text = "Hello UILabel"
// Set cell width to 100%
let collectionViewWidth = self.collectionView.bounds.size.width
cell.frame.size.width = collectionViewWidth
cell.locationLabel.frame.size.width = collectionViewWidth
return cell
}