プログラムでUICollectionViewの幅を設定したいとします。私はcollectionView.frameと.boundsを成功せずに変更しようとしました。UICollectionViewの幅をプログラムで設定する方法
class CenterCellCollectionViewFlowLayout: UICollectionViewFlowLayout {
override func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
if let cv = self.collectionView {
let cvBounds = cv.bounds
let width = cvBounds.size.width //this is always 600, it should be 320
}
}
return super.targetContentOffsetForProposedContentOffset(proposedContentOffset)
}
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionView.frame = CGRectMake(collectionView.frame.origin.x, collectionView.frame.origin.y, self.view.frame.width, collectionView.frame.height)
collectionView.bounds = CGRectMake(collectionView.bounds.origin.x, collectionView.bounds.origin.y, self.view.frame.width, collectionView.bounds.height)
let width = collectionView.bounds.width //this is 320
collectionView.reloadData()
}
}
フレームを変更する必要があります。あなたのコードを追加してください...? –
あなたのUICollectionViewのように、NSLayoutConstraintsを使用して位置決めしているようです。これを最初に確認してください。 –