前提・実現したいこと
[swift5]
どの画面サイズでも、画面内に収まるようにscrollViewの中に3つのimageVIewを横スライドで実装したい。
発生している問題
カスタムセル内で実装しているのですが、scrollViewをstoryboard上で制約をつけようとしたのですが、なかなかできなかったので、storyboardには、scrollViewの設置する位置にContainerViewを設置しました。
その中にscrollViewをコードで宣言、設置し、その中にimageViewを宣言し表示させようと思っております。
基本的に、iphone8で実装し、表示することはできるのですが、機種を変えて実装するとはみ出てしまったりしてしまい、なかなか制約がうまく行きません。
該当のソースコード
TableViewCell
1 override func awakeFromNib() { 2 super.awakeFromNib() 3 4 5 let scrollView = UIScrollView() 6 //scrollViewを入れる 7 addSubview(scrollView) 8 scrollView.isPagingEnabled = true 9 scrollView.frame = containerView.frame 10 11 12 pageControl.numberOfPages = circleSampleImage.count 13 for index in 0..<circleSampleImage.count { 14 frame.origin.x = scrollView.frame.size.width * CGFloat(index) 15 frame.size = scrollView.frame.size 16 17 18 let imgView = UIImageView() 19 20 switch index { 21 case 0: 22 imgView.frame = CGRect(x:0, y:0, width:self.bounds.width, height:260 ) 23 print(imgView.bounds.width) 24 case 1: 25 imgView.frame = CGRect(x:self.bounds.width, y:0, width:self.bounds.width, height:260 ) 26 case 2: 27 imgView.frame = CGRect(x:self.bounds.width * 2, y:0, width:self.bounds.width, height:260 ) 28 29 default: 30 return 31 } 32 33 imgView.image = UIImage(named: circleSampleImage[index]) 34 scrollView.addSubview(imgView) 35 } 36 37 //content size を決める 38 scrollView.contentSize = CGSize(width:(scrollView.frame.size.width * CGFloat(circleSampleImage.count)), height: scrollView.frame.size.height) 39 scrollView.delegate = self 40
こう実装しているのですが、
iphoneSEでは、画像が収まらなく、iphoneXRでは余ってしまいます。
iPhoneXR↓
iPhoneSE↓
試したこと
imageSizeをcontainerViewのサイズに合わせようとした。
scrollViewをstoryboardに配置し、そこで制約をかけようとした(できなかった。)
補足情報
この制約、画面サイズにも対応できる実装方法を教えていただきたいです。
かなり大雑把な質問で大変申し訳ありません。
この実装方法以外でより実現可能性が高いものがもしありましたら、教えていただけると幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー