Swift版導航欄適配參考
創(chuàng)新互聯(lián)公司專注于江陽企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設,商城網(wǎng)站制作。江陽網(wǎng)站建設公司,為江陽等地區(qū)提供建站服務。全流程按需定制制作,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
在iOS 13中給導航的 UINavigationBar 增加了 scrollEdgeAppearance 屬性應用在iOS 14及更早版本的大標題導航欄上,在iOS 15中 scrollEdgeAppearance 屬性適用于所有的導航欄
官方解釋:描述當關(guān)聯(lián)的UIScrollView到達與導航條相鄰的邊緣(導航條的上邊緣)時要使用的導航條的外觀屬性。如果沒有設置,將使用修改后的standardAppearance
scrollEdgeAppearance 與 standardAppearance 一樣同屬于 UINavigationBarAppearance 類型 父類是 UIBarAppearance
其中影響導航欄顏色、陰影涉及到以下屬性
因為 scrollEdgeAppearance = nil ,當前控制器如果使用有 ScrollView 類的控件,當 ScrollView 向上滾動時 scrollEdgeAppearance 會默認使用 standardAppearance 的屬性效果。所以 backgroundEffect 和 shadowColor 屬性需要顯式設置為nil,以防止 backgroundEffect、shadowColor 有顏色值影響導航欄透明效果。
下一篇:Swift版導航欄適配
PERFECT!
這里筆者給出更簡單的劉海屏適配例子:
主要利用了safe area來解決劉海屏的距離問題。
使用safe area的時候注意不要在viewdidload里面獲取,要等到viewdidapper之后。不然獲取到的safe area offset為空,建議在viewdidlayout里面獲取。
我們通常所說的iPhone5屏幕尺寸為4英寸、iPhone6屏幕尺寸為4.7英寸,指的是顯示屏對角線的長度(diagonal)
PPI(Pixel Per Inch by diagonal):表示沿著對角線,每英寸所擁有的像素(Pixel)數(shù)目。
PPI數(shù)值越高,代表顯示屏能夠以越高的密度顯示圖像,即通常所說的分辨率越高、顆粒感越弱。
根據(jù)勾股定理
計算結(jié)果稍有出入,這是因為像素的離散采樣有鋸齒效應。
早期的iPhone3GS的屏幕分辨率是320*480(PPI=163),iOS繪制圖形(CGPoint/CGSize/CGRect)均以point為單位(measured in points):
后來在iPhone4中,同樣大小(3.5 inch)的屏幕采用了Retina顯示技術(shù),橫、縱向方向像素密度都被放大到2倍,像素分辨率提高到(320x2)x(480x2)= 960x640(PPI=326), 顯像分辨率提升至iPhone3GS的4倍(1個Point被渲染成1個2x2的像素矩陣)。
在同樣的邏輯坐標系下(320x480):
為了自動適應分辨率,系統(tǒng)會根據(jù)設備實際分辨率,自動給UIScreen.scale賦值,該屬性對開發(fā)者只讀。
在同樣的邏輯分辨率下,可以通過scale參數(shù)識別是iPhone3GS還是iPhone4(s)。以下基于nativeScale參數(shù),定義了探測機型是否為iPhone6+的宏
--------------------------------------------------------------------------------那么,同樣的分辨率和scale,如何區(qū)分機型iPhone4與4s、iPhone5與5s呢?通過[[UIDevice currentDevice] model]只能判別iPhone、iPad、iPod大類,要判斷iPhone具體機型型號,則需要通過sysctlbyname("hw.machine")獲取詳細的設備參數(shù)信息予以甄別。
iPhone3GS時代,我們?yōu)橐粋€應用提供圖標(或按鈕提供貼圖),只需要icon.png。針對現(xiàn)在的iPhone4~6 Retina顯示屏,需要制作額外的@2x高分辨率版本。
Phone6+在實際渲染時,downsampling/1.15(1242x2208-1080x1920),準確的講,應該是@2.46x。蘋果為方便開發(fā)者用的是@3x的素材,然后再縮放到@2.46x上。
參考: 一張圖幫你看懂 iPhone 6 Plus 屏幕分辨率
1
該方法使用系統(tǒng)緩存,適合表視圖重復加載圖像的情形。同時該API根據(jù)UIScreen的scale,自動查找包含對應高倍圖后綴名(@2x)的文件,如果找到二倍圖,則image.scale=2.0,對應邏輯size大小以point度量(pixel度量的一半);如果沒找到設置默認image.scale=1.0,對應邏輯size大小同像素尺寸。因此,
2
這組方法創(chuàng)建的UIImage對象 沒有使用系統(tǒng)緩存 ,并且指定文件名必須包含明確的高倍圖后綴。
3
//考慮? 轉(zhuǎn)屏? 的影響,按照實際屏幕方向(UIDevice ?Orientation)的寬高
//不考慮轉(zhuǎn)屏的影響,只取豎屏(UIDevice OrientationPortrait)的寬高
待續(xù)
基本上每個IOS APP都會有新手引導頁面這個功能,常規(guī)的就是幾張靜態(tài)圖片,可以左右滾動。既然涉及到圖片,就肯定會存在適配的問題(為了達到最優(yōu)的體驗效果,一般都會針對不同的分辨率設計不同尺寸的圖片),本文主要就是討論如何適配的問題。
2.1 方案一
根據(jù)屏幕分辨率的不同,使用不同的圖片。
2.2 ?方案二
熟悉IOS開發(fā)的人都知道,每一個ios項目中,都有一個Assets.xcassets文件夾,用來管理項目中所有的圖片(AppIcon、LaunchImage、其他業(yè)務圖片)。
從上面的截圖我們可以看到,xcode提供了兩個內(nèi)置的類型AppIcon、LaunchImage。我們只要提供正確尺寸的圖片,ios系統(tǒng)就能在不同分辨率的設備上使用對應的圖片而無需我們自己指定;另外就是我們自己創(chuàng)建的(avatar),提供2x、3x這兩種類型的圖片即可(1x的設備現(xiàn)在基本上找不到了,而且當前的ios系統(tǒng)也不支持1x的設備)。那么問題來了,我們自己創(chuàng)建的圖片集合,只有3個類型(1x、2x、3x),并不能按照分辨率來設定。再看一下上面的截圖,有一個“show”的圖片集合,形式如下:
咦!這個鬼東西是怎么搞出來的?我們先看看Assets.xcassets文件夾在硬盤上的組織形式:
從上圖我們可以看到,系統(tǒng)內(nèi)置的兩種類型AppIcon、LaunchImage對于的文件夾為AppIcon.appiconset、LaunchImage.launchimage,我們自己創(chuàng)建的圖片集合avatar對應的文件夾為avatar.imageset。講到這里,你應該大概猜到了show這個圖片集合是怎么創(chuàng)建出來了吧?
1、先創(chuàng)建一個LaunchImage類型的圖片集合;
2、修改名稱(LaunchImage→show)
3、修改文件夾名稱(show.launchimage→show.imageset)
回到正題,在show這個圖片集合里面,我們就可以輕松的根據(jù)分辨率設置2x、3x類型的圖片。
現(xiàn)在我們可以按照下圖的方式使用新手引導圖片了:
親測:不同分辨率的設備,展示對應的圖片。
我們注意到,show.imageset文件夾中有一個文件Contents.json,正是這個文件,ios系統(tǒng)才能根據(jù)設備類型展示對應的圖片資源。Contents.json文件內(nèi)容如下:
系統(tǒng)展示圖片的時候,會先解析這個文件,然后根據(jù)設備的分辨率,找到對應的圖片。
分享標題:ios開發(fā)適配,安卓和ios適配
當前URL:http://jinyejixie.com/article32/dssscsc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、商城網(wǎng)站、搜索引擎優(yōu)化、標簽優(yōu)化、網(wǎng)站排名、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)