您好,登錄后才能下訂單哦!
想要創建一個自己的window用于展示提示,需要自己去處理該window的旋轉,根據不同的方向調整window的位置和transform。
一、那么就要完成2方面:
1、創建一個UIWindow,指定它的frame為statusBar的frame,并且設置該window的windowLevel級別略高于statusBar的windowLevel。
2、注冊系統的旋轉通知,監測設備方向變化,根據當前設備的方向做出相應的調整。
在完成整個過程中主要用到了UIWindow和transfrom有關內容,那么相比之下較難的就屬在自己旋轉window這一塊了。
二、Window的旋轉
UIKit通過UIWindow和UIViewContoller為我們提供了一套旋轉支持的框架,在方向變化以后viewController中view的坐標系統就已經被指引到正確的方向上去了,那么只要簡簡單單的再布下局就ok了。我們現在是直接通過UIWindow實現狀態欄提示控件,所以要獨立完成window旋轉操作。
大家都清楚對當前view設置的transform是針對它的父view的,window本身就是一種特殊的view。你可能會疑問window不就是最底層的view,它還有父view嗎?
答案是YES,不信的話你可以打印一下window的superView看看。window默認方向是portrait方向,向下y坐標增加,向右x坐標增加。因此Portrait方向我們只需要向普通的view那樣布局就可以了,其它幾個方向我們就需要用到transform和設置位置來搞定了。
如圖:從Portrait方向轉到landscapeRight方向展示:
從上面圖中的展示可以很清楚的看到是怎樣將初始位置(Portrait方向),旋轉到目標位置(landscapeRight方向)的過程。
總結如下:
1、最開始window位置是在屏幕的最上面的
2、對window做90°順時針旋轉,就到了綠色的位置上了
3、第三步要再修改window的center到屏幕最右邊并且上下居中,使位置在到紅色虛線的部分
4、最后window的bound進行設置,目的讓window占據屏幕右邊的部分。
但是有一點大家一定要注意:在先前的時候window的transform就已經順時針轉了90°了,所以,高和寬也就不變了,此時width代表高,height代表寬。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。