質問編集履歴

3 文字の訂正

shuyaaa

shuyaaa score 17

2019/03/24 04:50  投稿

UIScrollView ページ スクロールによる画像の表示
サーバから画像をアルバム形式で取得してその一覧を表示させたのちに、タップされた画像を最初に表示させ残りの画像はスクロールによって表示させたいです。
しルによる画像変更はできるのですが、どの画像をタップしても一枚めの画像が表示されてしまいます。
どこの記述をどのように変えれば良いのでしょうか。
```swift
import UIKit
class image_detailViewController: UIViewController {
   
   //タップされた画像
   var recieve_touch_image: UIImage?
   //アルバム一覧の配列
   var recieve_image_list: Array<UIImage> = []
   
   // ScrollScreenの高さ
   var scrollScreenHeight:CGFloat!
   // ScrollScreenの幅
   var scrollScreenWidth:CGFloat!
   
   var pageNum:Int!
   
   var imageWidth:CGFloat!
   var imageHeight:CGFloat!
   var screenSize:CGRect!
   @IBOutlet weak var image: UIImageView!
   @IBOutlet weak var scrView: UIScrollView!
   
   
   override func viewDidLoad() {
       super.viewDidLoad()
       
       // 下向きにスワイプした時のジェスチャーを作成
       let downSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.closeModalView))
       downSwipeGesture.direction = .down
       
       // 画面にジェスチャーを登録
       view.addGestureRecognizer(downSwipeGesture)
       
       
       screenSize = UIScreen.main.bounds
       
       // ページスクロールとするためにページ幅を合わせる
       scrollScreenWidth = screenSize.width
       
       let imageTop:UIImage = recieve_touch_image!
       pageNum = recieve_image_list.count
       
       imageWidth = imageTop.size.width
       imageHeight = imageTop.size.height
       scrollScreenHeight = scrollScreenWidth * imageHeight/imageWidth
       
       for i in 0 ..< pageNum {
           // UIImageViewのインスタンス
           let image:UIImage = recieve_image_list[i]
           let imageView = UIImageView(image:image)
           
           var rect:CGRect = imageView.frame
           rect.size.height = scrollScreenHeight
           rect.size.width = scrollScreenWidth
           
           imageView.frame = rect
           imageView.tag = i + 1
           
           // UIScrollViewのインスタンスに画像を貼付ける
           self.scrView.addSubview(imageView)
           
       }
       
       setupScrollImages()
       
   }
   
   func setupScrollImages(){
       
       // ダミー画像
       let imageDummy:UIImage = recieve_touch_image!
       var imgView = UIImageView(image:imageDummy)
       var subviews:Array = scrView.subviews
       
       // 描画開始の x,y 位置
       var px:CGFloat = 0.0
       let py:CGFloat = (screenSize.height - scrollScreenHeight)/2
       
       for i in 0 ..< subviews.count {
           imgView = subviews[i] as! UIImageView
           if (imgView.isKind(of: UIImageView.self) && imgView.tag > 0){
               
               var viewFrame:CGRect = imgView.frame
               viewFrame.origin = CGPoint(x: px, y: py)
               imgView.frame = viewFrame
               
               px += (scrollScreenWidth)
               
           }
       }
       // UIScrollViewのコンテンツサイズを画像のtotalサイズに合わせる
       let nWidth:CGFloat = scrollScreenWidth * CGFloat(pageNum)
       scrView.contentSize = CGSize(width: nWidth, height: scrollScreenHeight)
       
   }
   
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
   
   
   
   // 画面を閉じる
   @objc func closeModalView() {
       dismiss(animated: true, completion: nil)
   }
   
   
}
```
例えば、以下のように画像の一覧があり(var recieve_image_list: Array<UIImage> = [])、
![イメージ説明](d47748869b9d1b33b35164f8336dda62.png)
真ん中の画像をタップしても(var recieve_touch_image: UIImage?)
の画像をタップしても(var recieve_touch_image: UIImage?)
![イメージ説明](bebca7e43a3204ee23cd2bd4f7728e14.png)
といいう一番左の画像が表示されてしまいます。
  • Swift

    14103 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

2 画像の訂正

shuyaaa

shuyaaa score 17

2019/03/24 04:49  投稿

UIScrollView ページ スクロールによる画像の表示
サーバから画像をアルバム形式で取得してその一覧を表示させたのちに、タップされた画像を最初に表示させ残りの画像はスクロールによって表示させたいです。
しルによる画像変更はできるのですが、どの画像をタップしても一枚めの画像が表示されてしまいます。
どこの記述をどのように変えれば良いのでしょうか。
```swift
import UIKit
class image_detailViewController: UIViewController {
   
   //タップされた画像
   var recieve_touch_image: UIImage?
   //アルバム一覧の配列
   var recieve_image_list: Array<UIImage> = []
   
   // ScrollScreenの高さ
   var scrollScreenHeight:CGFloat!
   // ScrollScreenの幅
   var scrollScreenWidth:CGFloat!
   
   var pageNum:Int!
   
   var imageWidth:CGFloat!
   var imageHeight:CGFloat!
   var screenSize:CGRect!
   @IBOutlet weak var image: UIImageView!
   @IBOutlet weak var scrView: UIScrollView!
   
   
   override func viewDidLoad() {
       super.viewDidLoad()
       
       // 下向きにスワイプした時のジェスチャーを作成
       let downSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.closeModalView))
       downSwipeGesture.direction = .down
       
       // 画面にジェスチャーを登録
       view.addGestureRecognizer(downSwipeGesture)
       
       
       screenSize = UIScreen.main.bounds
       
       // ページスクロールとするためにページ幅を合わせる
       scrollScreenWidth = screenSize.width
       
       let imageTop:UIImage = recieve_touch_image!
       pageNum = recieve_image_list.count
       
       imageWidth = imageTop.size.width
       imageHeight = imageTop.size.height
       scrollScreenHeight = scrollScreenWidth * imageHeight/imageWidth
       
       for i in 0 ..< pageNum {
           // UIImageViewのインスタンス
           let image:UIImage = recieve_image_list[i]
           let imageView = UIImageView(image:image)
           
           var rect:CGRect = imageView.frame
           rect.size.height = scrollScreenHeight
           rect.size.width = scrollScreenWidth
           
           imageView.frame = rect
           imageView.tag = i + 1
           
           // UIScrollViewのインスタンスに画像を貼付ける
           self.scrView.addSubview(imageView)
           
       }
       
       setupScrollImages()
       
   }
   
   func setupScrollImages(){
       
       // ダミー画像
       let imageDummy:UIImage = recieve_touch_image!
       var imgView = UIImageView(image:imageDummy)
       var subviews:Array = scrView.subviews
       
       // 描画開始の x,y 位置
       var px:CGFloat = 0.0
       let py:CGFloat = (screenSize.height - scrollScreenHeight)/2
       
       for i in 0 ..< subviews.count {
           imgView = subviews[i] as! UIImageView
           if (imgView.isKind(of: UIImageView.self) && imgView.tag > 0){
               
               var viewFrame:CGRect = imgView.frame
               viewFrame.origin = CGPoint(x: px, y: py)
               imgView.frame = viewFrame
               
               px += (scrollScreenWidth)
               
           }
       }
       // UIScrollViewのコンテンツサイズを画像のtotalサイズに合わせる
       let nWidth:CGFloat = scrollScreenWidth * CGFloat(pageNum)
       scrView.contentSize = CGSize(width: nWidth, height: scrollScreenHeight)
       
   }
   
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
   
   
   
   // 画面を閉じる
   @objc func closeModalView() {
       dismiss(animated: true, completion: nil)
   }
   
   
}
```
例えば、以下のように画像の一覧があり(var recieve_image_list: Array<UIImage> = [])、
![イメージ説明](b4f869a6b760e3326a63d9c3fca3c7fc.jpeg)
![イメージ説明](d47748869b9d1b33b35164f8336dda62.png)
真ん中の画像をタップしても(var recieve_touch_image: UIImage?)
![イメージ説明](25f32a583a631b5008d4fc6d2c7424ae.jpeg)
![イメージ説明](bebca7e43a3204ee23cd2bd4f7728e14.png)
といいう一番左の画像が表示されてしまいます。
  • Swift

    14103 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1 説明の変更

shuyaaa

shuyaaa score 17

2019/03/15 10:00  投稿

UIScrollView ページ スクロールによる画像の表示
サーバから画像をアルバム形式で取得してその一覧を表示させたのちに、タップされた画像を表示させ残りの画像はスクロールによって表示させたいです。
サーバから画像をアルバム形式で取得してその一覧を表示させたのちに、タップされた画像を最初に表示させ残りの画像はスクロールによって表示させたいです。
どこの記述をどのように変えれば良いのでしょうか。
```swift
import UIKit
class image_detailViewController: UIViewController {
   
   //タップされた画像
   var recieve_touch_image: UIImage?
   //アルバム一覧の配列
   var recieve_image_list: Array<UIImage> = []
   
   // ScrollScreenの高さ
   var scrollScreenHeight:CGFloat!
   // ScrollScreenの幅
   var scrollScreenWidth:CGFloat!
   
   var pageNum:Int!
   
   var imageWidth:CGFloat!
   var imageHeight:CGFloat!
   var screenSize:CGRect!
   @IBOutlet weak var image: UIImageView!
   @IBOutlet weak var scrView: UIScrollView!
   
   
   override func viewDidLoad() {
       super.viewDidLoad()
       
       // 下向きにスワイプした時のジェスチャーを作成
       let downSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.closeModalView))
       downSwipeGesture.direction = .down
       
       // 画面にジェスチャーを登録
       view.addGestureRecognizer(downSwipeGesture)
       
       
       screenSize = UIScreen.main.bounds
       
       // ページスクロールとするためにページ幅を合わせる
       scrollScreenWidth = screenSize.width
       
       let imageTop:UIImage = recieve_touch_image!
       pageNum = recieve_image_list.count
       
       imageWidth = imageTop.size.width
       imageHeight = imageTop.size.height
       scrollScreenHeight = scrollScreenWidth * imageHeight/imageWidth
       
       for i in 0 ..< pageNum {
           // UIImageViewのインスタンス
           let image:UIImage = recieve_image_list[i]
           let imageView = UIImageView(image:image)
           
           var rect:CGRect = imageView.frame
           rect.size.height = scrollScreenHeight
           rect.size.width = scrollScreenWidth
           
           imageView.frame = rect
           imageView.tag = i + 1
           
           // UIScrollViewのインスタンスに画像を貼付ける
           self.scrView.addSubview(imageView)
           
       }
       
       setupScrollImages()
       
   }
   
   func setupScrollImages(){
       
       // ダミー画像
       let imageDummy:UIImage = recieve_touch_image!
       var imgView = UIImageView(image:imageDummy)
       var subviews:Array = scrView.subviews
       
       // 描画開始の x,y 位置
       var px:CGFloat = 0.0
       let py:CGFloat = (screenSize.height - scrollScreenHeight)/2
       
       for i in 0 ..< subviews.count {
           imgView = subviews[i] as! UIImageView
           if (imgView.isKind(of: UIImageView.self) && imgView.tag > 0){
               
               var viewFrame:CGRect = imgView.frame
               viewFrame.origin = CGPoint(x: px, y: py)
               imgView.frame = viewFrame
               
               px += (scrollScreenWidth)
               
           }
       }
       // UIScrollViewのコンテンツサイズを画像のtotalサイズに合わせる
       let nWidth:CGFloat = scrollScreenWidth * CGFloat(pageNum)
       scrView.contentSize = CGSize(width: nWidth, height: scrollScreenHeight)
       
   }
   
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
       // Dispose of any resources that can be recreated.
   }
   
   
   
   // 画面を閉じる
   @objc func closeModalView() {
       dismiss(animated: true, completion: nil)
   }
   
   
}
```
```
例えば、以下のように画像の一覧があり(var recieve_image_list: Array<UIImage> = [])、
![イメージ説明](b4f869a6b760e3326a63d9c3fca3c7fc.jpeg)
真ん中の画像をタップしても(var recieve_touch_image: UIImage?)
![イメージ説明](25f32a583a631b5008d4fc6d2c7424ae.jpeg)
といいう一番左の画像が表示されてしまいます。
  • Swift

    14103 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る