iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 24
0

昨天試過縮放功能,但是在旋轉的時候會出現畫面沒有更新frame而導致 “ landscapeleft / landscape right “ 在畫面的右方會出現一大片空白。

這時候我們可以用兩個 instance Methods 來協助解決 “viewWillTransition(to:with:) “ “ viewWillLayoutSubviews() “ ,可以新增並且印出 screen size 。

    override func viewWillLayoutSubviews() {
        myScrollView.frame = view.frame
        print("view will layout -> \(myScrollView.frame.width),\(myScrollView.frame.height) ")
    }
    
    override func viewWillTransition(to: CGSize, with:
        UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: to, with: with )
        print("view will transition -> \(myScrollView.frame.width),\(myScrollView.frame.height)")
}


可以發現,順序是 ::viewWillTransition -> viewWillLayoutSubviews:: 但是 screen size 的更新只出現在 viewWillLayoutSubviews
再配合可以偵測裝置是否有旋轉/翻轉的 property
var orientation: UIDeviceOrientation { get }
並且修改 backgroundColor 來提醒我們每次翻轉的不同

switch UIDevice.current.orientation {
                    case .landscapeLeft :
                        print ("========== 裝置橫向 左 ========")
                        myScrollView.frame = view.frame
                        myScrollView.backgroundColor = UIColor.red
                        print("view will layout in landScapeLeft-> \(myScrollView.frame.width),\(myScrollView.frame.height) ")

                    case .landscapeRight :
                        print ("========== 裝置橫向 右 ========")
                        myScrollView.frame = view.frame
                        myScrollView.backgroundColor = UIColor.green
                        print("view will layout in landscapeRight -> \(myScrollView.frame.width),\(myScrollView.frame.height) ")
            
                    case .portrait:
                        print ("========== portrait ========")
                        myScrollView.frame = view.frame
                        
                        myScrollView.backgroundColor = UIColor.yellow

                        print("view will layout in protrait -> \(myScrollView.frame.width),\(myScrollView.frame.height) ")
            
                    default :
                        print(" others")
            
                    }

上一篇
UIScrollView (二) ( D Day + 22 )
下一篇
UIScrollView (四.5) ( D Day + 24 )
系列文
挑戰 30天內送審一支APP 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言