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