###やりたいこと
UISlider
の値を使って、UIImageView
のサイズをスムーズに変更したい
###やったこと
UISlider
、UIImageView
、UILabel
をStoryBoard上に配置したのち、以下のコードをViewController.swiftに書きました。
swift
1var imgViewWidth: CGFloat = 0 2var imgViewHeight: CGFloat = 0 3var screenWidth: CGFloat = 0 4var screenHeight: CGFloat = 0 5 6@IBAction func slider(_ sender: UISlider) { 7 // slider()以外が呼び出されてないかを確認するため 8 subLabel.text = "slider() is Loaded" 9 10 // スライダーの値を少数第一位までで四捨五入してvalueに代入 11 let value = round(sender.value * 10) / 10 12 13 // valueの値をlabelに表示 14 label.text = String(value) 15 16 // imageViewのサイズを 元のサイズ*value に設定 17 imgView.frame.size = CGSize(width: imgViewWidth * CGFloat(value), height: imgViewHeight * CGFloat(value)) 18 19 // imageViewの中心をviewの中心に設定 20 imgView.center = CGPoint(x: screenWidth/2, y: screenHeight/2) 21 } 22 23override func viewDidLoad() { 24 super.viewDidLoad() 25 26 subLabel.text = "viewDidLoad() is Loaded" 27 28 screenWidth = view.frame.size.width 29 screenHeight = view.frame.size.height 30 31 imgViewWidth = imgView.frame.size.width 32 imgViewHeight = imgView.frame.size.height 33 }
###解決したい問題
Sliderを動かすとLabelの値は正常に変更され、画像の大きさも変わるのですが、下記URLの動画のように、画像の大きさが変わる前の一瞬、storyboadに設定した元のサイズの画像が表示されてしまう。
実機での挙動をYoutubeにアップロードしました→iPhone8PLUSで動かした動画
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。