У меня MasterViewController
с UICollectionView
в storyboard
.Я использую этот код для моего UICollectionView
:
MasterViewController:
class MasterViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, URLSessionDownloadDelegate, SKProductsRequestDelegate, SKStoreProductViewControllerDelegate {
@IBOutlet weak var collectionView: UICollectionView?
fileprivate var currentPage: Int = 0
fileprivate var pageSize: CGSize {
let layout = UPCarouselFlowLayout()
var pageSize = layout.itemSize
pageSize.width += layout.minimumLineSpacing
return pageSize
}
override func viewDidLoad() {
super.viewDidLoad()
self.addCollectionView()
self.setupLayout()
}
func setupLayout(){
let pointEstimator = RelativeLayoutUtilityClass(referenceFrameSize: self.view.frame.size)
self.collectionView?.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
self.collectionView?.topAnchor.constraint(equalTo: self.view.topAnchor, constant: pointEstimator.relativeHeight(multiplier: 0.1754)).isActive = true
self.collectionView?.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
self.collectionView?.heightAnchor.constraint(equalToConstant: pointEstimator.relativeHeight(multiplier: 0.6887)).isActive = true
self.currentPage = 0
}
func addCollectionView(){
let pointEstimator = RelativeLayoutUtilityClass(referenceFrameSize: self.view.frame.size)
let layout = UPCarouselFlowLayout()
layout.itemSize = CGSize(width: pointEstimator.relativeWidth(multiplier: 0.73333), height: 400)
layout.scrollDirection = .horizontal
self.collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
self.collectionView?.translatesAutoresizingMaskIntoConstraints = false
self.collectionView?.delegate = self
self.collectionView?.dataSource = self
self.collectionView?.register(MasterViewCell.self, forCellWithReuseIdentifier: "Cell")
let spacingLayout = UPCarouselFlowLayout()
spacingLayout.spacingMode = UPCarouselFlowLayoutSpacingMode.overlap(visibleOffset: 20)
}
MasterViewCell:
class MasterViewCell: UICollectionViewCell {
let customView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.layer.cornerRadius = 12
return view
}()
var cellImageView: UIImageView!
override init(frame: CGRect) {
super.init(frame: frame)
self.addSubview(self.customView)
self.customView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
self.customView.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
self.customView.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 1).isActive = true
self.customView.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 1).isActive = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
RelativeLayoutUtilityClass:
class RelativeLayoutUtilityClass {
var heightFrame: CGFloat?
var widthFrame: CGFloat?
init(referenceFrameSize: CGSize){
heightFrame = referenceFrameSize.height
widthFrame = referenceFrameSize.width
}
func relativeHeight(multiplier: CGFloat) -> CGFloat{
return multiplier * self.heightFrame!
}
func relativeWidth(multiplier: CGFloat) -> CGFloat{
return multiplier * self.widthFrame!
}
Но у меня есть эта ошибка в MasterViewCell
: *Thread 1: Fatal error: init(coder:) has not been implemented*
Как ее исправить?