真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)適配,ios開發(fā)適配小窗播放視頻

iOS開發(fā) - iOS15導(dǎo)航欄適配(Object-C、Swift)

Swift版導(dǎo)航欄適配參考

岳普湖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,岳普湖網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為岳普湖近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的岳普湖做網(wǎng)站的公司定做!

在iOS 13中給導(dǎo)航的 UINavigationBar 增加了 scrollEdgeAppearance 屬性應(yīng)用在iOS 14及更早版本的大標(biāo)題導(dǎo)航欄上,在iOS 15中 scrollEdgeAppearance 屬性適用于所有的導(dǎo)航欄

官方解釋:描述當(dāng)關(guān)聯(lián)的UIScrollView到達(dá)與導(dǎo)航條相鄰的邊緣(導(dǎo)航條的上邊緣)時(shí)要使用的導(dǎo)航條的外觀屬性。如果沒有設(shè)置,將使用修改后的standardAppearance

scrollEdgeAppearance 與 standardAppearance 一樣同屬于 UINavigationBarAppearance 類型 父類是 UIBarAppearance

其中影響導(dǎo)航欄顏色、陰影涉及到以下屬性

因?yàn)?scrollEdgeAppearance = nil ,當(dāng)前控制器如果使用有 ScrollView 類的控件,當(dāng) ScrollView 向上滾動(dòng)時(shí) scrollEdgeAppearance 會(huì)默認(rèn)使用 standardAppearance 的屬性效果。所以 backgroundEffect 和 shadowColor 屬性需要顯式設(shè)置為nil,以防止 backgroundEffect、shadowColor 有顏色值影響導(dǎo)航欄透明效果。

下一篇:Swift版導(dǎo)航欄適配

PERFECT!

iOS開發(fā)技巧(OC版):關(guān)于iOS11適配的一些坑

在iOS11以前, 自定義UIViewController時(shí), 從來沒有考慮過topLayoutGuide和bottomLayoutGuide這兩個(gè)屬性.但是在iOS11出來之后,這兩個(gè)屬性被廢棄,取而代之的就是safeArea的概念,safeArea是描述你的視圖部分不被任何內(nèi)容遮擋的方法。 它提供兩種方式:safeAreaInsets或safeAreaLayoutGuide來提供給你safeArea的參照值,即 insets 或者 layout guide。 safeArea區(qū)域如圖所示:

在除了iPhone X以外的型號(hào)手機(jī)上, UINavigationController 就是 topLayoutGuide區(qū)域. UITabBarController就是bottomLayoutGuide.但是這兩個(gè)屬性在iOS11已經(jīng)被取代了. 取而代之的就是safeArea區(qū)域(iPhone X圖區(qū)域4部分)

當(dāng)我們自定義一個(gè)UIViewController, 內(nèi)部嵌套了UINavigationController 或者UITabBarController的時(shí)候. 運(yùn)行程序會(huì)出現(xiàn)以下錯(cuò)誤:

原因是少了:

具體是為什么,沒有細(xì)研究.不過解決辦法如下:

因?yàn)槲沂莿?chuàng)建的空項(xiàng)目所以只有LaunchScreen.storyboard..如果你的項(xiàng)目里還有Main.storyboard,那么 你需要把第四個(gè)勾勾也去掉.

區(qū)域一: 高度30

區(qū)域二:高度14

區(qū)域三:高度44

區(qū)域五:高度49

區(qū)域六:高度14

區(qū)域七:高度20

更新iOS11以后, UITabBarController上的圖標(biāo)文字由原來的垂直放置, 變成水平放置

iPhone X 橫豎屏在尺寸上有很多細(xì)微的差別.

我們打印UINavigationController ?navigationBar的時(shí)候發(fā)現(xiàn)他的高度為44.也就是上圖綠色區(qū)域.但是在實(shí)際顯示的時(shí)候確實(shí)紅色區(qū)域,高度為32.整個(gè)高度向上12.也就是藍(lán)色區(qū)域.

我們打印UITabBarController? tabBar的時(shí)候發(fā)現(xiàn)他的高度為32,就是橘色區(qū)域,紅色區(qū)域?yàn)楣δ軈^(qū),高度為21.我們是何止tabBar顏色的時(shí),包括橘色區(qū)和紅色區(qū).

待更新

解決方案: 準(zhǔn)備一張尺寸:1125 * 2436的啟動(dòng)圖片,? 添加到Assret中

解決方案: 通過改變按鈕的 contentEdgeInsets和imageEdgeInsets的值成功改變了按鈕的偏移問題,單獨(dú)設(shè)置contentEdgeInsets也可達(dá)到一定的效果。

解決方案:iOS11棄用了automaticallyAdjustsScrollViewInsets屬性,新增contentInsetAdjustmentBehavior來替代它

- (void)createView:(BOOL)useForRendering showRightAway:(BOOL)showRightAway;

{

if(_view == nil)

{

? ? NSString *deviceVersion = [self getDeviceVersion];

? ? if ([deviceVersion isEqualToString:@"iPhone10,3"] || [deviceVersion isEqualToString:@"iPhone10,6"])

? ? {

? ? ? ? CGRect bounds = CGRectMake(34, 0, 744, 375);

? ? ? ? _window? = [[UIWindow alloc] initWithFrame:bounds];

? ? }

? ? else

? ? {

? ? ? ? _window = [[UIWindow alloc] initWithFrame: _screen.bounds];

? ? }

? _window.screen = _screen;

? if(_screen == [UIScreen mainScreen])

? ? {

? ? ? ?_view = [[GetAppController() init] unityView];

? ? ? ? NSAssert([_view isKindOfClass:[UnityView class]], @"You MUST use UnityView subclass as unity view");

? ? }

? ? else

? ? {

? ? ? ? _view = [(useForRendering ? [UnityRenderingView alloc] : [UIView alloc]) initWithFrame: _screen.bounds];

? ? }

? _view.contentScaleFactor = UnityScreenScaleFactor(self.screen);

? ? [self updateScreenSize];

? if(showRightAway)

? ? {

? ? ? ? [_window addSubview:_view];

? ? ? ? [_window makeKeyAndVisible];

? ? }

}

}

- (NSString*)getDeviceVersion

{

struct utsname systemInfo;

uname(systemInfo);

NSString *deviceVersion = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];

NSLog(@"添加獲取手機(jī)型號(hào)方法 ++ %@", deviceVersion);

return deviceVersion;

}

- (void)updateScreenSize

{

CGSize layerSize? ? = _view.layer.bounds.size;

NSString *deviceVersion = [self getDeviceVersion];

if ([deviceVersion isEqualToString:@"iPhone10,3"] || [deviceVersion isEqualToString:@"iPhone10,6"])

{

? ? layerSize = CGSizeMake(744, 375);

}

CGFloat scale? ? ? = UnityScreenScaleFactor(_screen);

_screenSize = CGSizeMake(layerSize.width * scale, layerSize.height * scale);

}

【轉(zhuǎn)】一套iOS平臺(tái)設(shè)計(jì)稿,搞定界面適配

加上Android生態(tài)中紛繁復(fù)雜的各種奇葩尺寸,現(xiàn)在APP設(shè)計(jì)開發(fā)必須考慮適配大、中、小三種屏幕。所以如何做到交付一套設(shè)計(jì)稿解決適配大中小三屏的問題?設(shè)計(jì)和開發(fā)之間采用什么協(xié)作模式?一個(gè)基本思路是:

1、選擇一種尺寸作為設(shè)計(jì)和開發(fā)基準(zhǔn);

2、定義一套適配規(guī)則,自動(dòng)適配剩下兩種尺寸;

3、特殊適配效果給出設(shè)計(jì)效果。

手機(jī)淘寶的iPhone 6/iPhone 6 Plus適配版本即將提交App store審核。先曬一下我們采用的協(xié)作模式,再慢慢說明原委。

第一步,視覺設(shè)計(jì)階段,設(shè)計(jì)師按寬度750px(iPhone 6)做設(shè)計(jì)稿,除圖片外所有設(shè)計(jì)元素用矢量路徑來做。設(shè)計(jì)定稿后在750px的設(shè)計(jì)稿上做標(biāo)注,輸出標(biāo)注圖。同時(shí)等比放大1.5倍生成寬度1125px的設(shè)計(jì)稿,在1125px的稿子里切圖。

第二步,輸出兩個(gè)交付物給開發(fā)工程師:一個(gè)是程序用到的@3x切圖資源,另一個(gè)是寬度750px的設(shè)計(jì)標(biāo)注圖。

第三步,開發(fā)工程師拿到750px標(biāo)注圖和@3x切圖資源,完成iPhone 6(375pt)的界面開發(fā)。此階段不能用固定寬度的方式開發(fā)界面,得用自動(dòng)布局(auto layout),方便后續(xù)適配到其它尺寸。

第四步,適配調(diào)試階段,基于iPhone 6的界面效果,分別向上向下調(diào)試iPhone 6 plus(414pt)和iPhone 5S及以下(320pt)的界面效果。由此完成大中小三屏適配。

為什么選擇iPhone 6作為基準(zhǔn)尺寸?

當(dāng)面對(duì)大中小三種屏幕需要適配的時(shí)候,很容易想到先做好一種屏幕,再去適配剩下兩種屏幕。第一個(gè)決定是到底以哪種屏幕作為設(shè)計(jì)和開發(fā)的基準(zhǔn)尺寸。我們選擇中間尺寸的iPhone 6(750px/375pt)作為基準(zhǔn),基于幾個(gè)原因:

1、從中間尺寸向上和向下適配的時(shí)候界面調(diào)整的幅度最小。375pt下的設(shè)計(jì)效果適配到414pt和320pt偏差不會(huì)太大。假設(shè)以414pt為基準(zhǔn)做出很優(yōu)雅的設(shè)計(jì),到320pt可能元素之間比例就不是那么回事了,比如圖片和文字之間視覺比例可能失調(diào)。

2、iPhone 6 plus有兩種顯示模式,標(biāo)準(zhǔn)模式分辨率為1242x2208,放大模式分辨率為1125x2001(即iPhone 6的1.5倍)??梢姽俜较到y(tǒng)里iPhone 6和iPhone 6 plus分辨率之間就存在1.5倍的倍率關(guān)系。很多情況下這兩種尺寸可以用1.5倍直接等比適配。

3、1242x2208這個(gè)奇葩的數(shù)值是蘋果官方都不愿意公開宣傳的一個(gè)分辨率,不便于記憶和計(jì)算柵格。640x1136雖然是廣泛應(yīng)用的一個(gè)分辨率,但是大屏?xí)r代依然以小尺寸為設(shè)計(jì)基準(zhǔn)顯然不合時(shí)宜,設(shè)計(jì)師會(huì)停留在小屏的視角做設(shè)計(jì)。

所以,iPhone6的750x1334是最適合基準(zhǔn)尺寸。

只交付一套設(shè)計(jì)稿,默認(rèn)用什么規(guī)則來適配?

前文提到適配策略是先選擇iPhone 6作為基準(zhǔn)設(shè)計(jì)尺寸,然后通過一套適配規(guī)則自動(dòng)適配到另外兩種尺寸。這套適配規(guī)則總結(jié)起來就一句話:文字流式,控件彈性,圖片等比縮放。

控件彈性指的是,navigation、cell、bar等適配過程中垂直方向上高度不變;水平方向?qū)挾茸兓瘯r(shí),通過調(diào)整元素間距或元素右對(duì)齊的方式實(shí)現(xiàn)自適應(yīng)。這樣屏幕越大,在垂直方向上可以顯示更多內(nèi)容,發(fā)揮大屏幕的優(yōu)勢(shì)。

按照上述默認(rèn)適配規(guī)則,大中小三種屏幕顯示效果均相同。有時(shí)候想在大屏幕顯示更多內(nèi)容,需要設(shè)計(jì)出特殊適配效果。比如App store首頁(yè)焦點(diǎn)圖,從iPhone 6適配到iPhone 6 plus時(shí)焦點(diǎn)圖尺寸和排版做了特殊處理。底下應(yīng)用列表也從一排3+個(gè)變成一排4+個(gè),真正實(shí)現(xiàn)了大屏幕顯示更多內(nèi)容的理念。這些就需要設(shè)計(jì)師給出相應(yīng)設(shè)計(jì)稿。

如何處理ios開發(fā)中的屏幕適配問題

 屏幕適配問題共有四種解決方案:(1)根據(jù)屏幕寬高寫控件frame(下策);(2)Autoresizing的使用(中策);(3)AutoLayout的使用(上策);(4)sizeClasses+AutoLayout的使用(上上策)。下面將會(huì)分別來進(jìn)行敘述。

(1)根據(jù)當(dāng)前屏幕的寬高寫frame

在新特性界面中,根據(jù):[UIScreen mainScreen].bounds.size.height.來判斷用戶的屏幕長(zhǎng)度,來判斷時(shí)3.5寸,4寸,4.7寸,5.5寸,以此來設(shè)置新特性中圖片選用哪套。

常用寫法:

#define JKScreenW [UIScreen mainScreen].bounds.size.width

CGFloat btnW = JKScreenW * 0.2;

缺點(diǎn):代碼復(fù)雜,容易出錯(cuò);而且維護(hù)難度大,靈活性極差。

(2)Autoresizing使用

在Autolayout以前,有Autoresizing可以做屏幕適配,但局限性較大,只能針對(duì)父子關(guān)系進(jìn)行有限調(diào)整,如邊距固定,尺寸可變,對(duì)于兄弟關(guān)系的調(diào)整無法實(shí)現(xiàn)。對(duì)于UI比較固定的app,這種方式基本滿足。相比之下,Autolayout比Autoresizing強(qiáng)大很多。

(3)Autolayout使用

--在以前的iOS程序是怎樣布局UI的?

經(jīng)常編寫大量的坐標(biāo)計(jì)算代碼;

為了保證在各種屏幕上都能有完美的UI界面效果,有時(shí)還需要分別為幾種屏幕編寫不同的坐標(biāo)計(jì)算代碼(即傳說中的“屏幕適配”)

--什么是Autolayout?

Autolayout是一種“自動(dòng)布局”技術(shù),專門用來布局UI界面的。

Autolayout自iOS6開始引入,由于Xcode4的不給力,當(dāng)時(shí)并沒有得到很大的推廣。

自iOS7(Xcode5)開始,Autolayout的開發(fā)效率得到很大的提升。

蘋果官方也推薦開發(fā)者使用Autolayout來布局UI界面。

Autolayout能夠很輕松的解決屏幕適配的問題。

(4)Size Classes使用

iOS8中新增了Size Classes特性,他是對(duì)當(dāng)前所有iOS設(shè)備尺寸的一個(gè)抽象。

用法:

屏幕的寬和高分別分成三種情況:(Compact,Regular,Any).也就是緊湊,正常和任意。這樣寬和高三三整合,一共九種情況。針對(duì)每一種情況,如果需要的話,我們可以單獨(dú)在storyboard或xib中設(shè)置UIView的自動(dòng)布局約束,甚至某一個(gè)button是否顯示都是能輕松實(shí)現(xiàn)的。

iOS開發(fā):iPhone尺寸和適配

我們通常所說的iPhone5屏幕尺寸為4英寸、iPhone6屏幕尺寸為4.7英寸,指的是顯示屏對(duì)角線的長(zhǎng)度(diagonal)

PPI(Pixel Per Inch by diagonal):表示沿著對(duì)角線,每英寸所擁有的像素(Pixel)數(shù)目。

PPI數(shù)值越高,代表顯示屏能夠以越高的密度顯示圖像,即通常所說的分辨率越高、顆粒感越弱。

根據(jù)勾股定理

計(jì)算結(jié)果稍有出入,這是因?yàn)橄袼氐碾x散采樣有鋸齒效應(yīng)。

早期的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個(gè)Point被渲染成1個(gè)2x2的像素矩陣)。

在同樣的邏輯坐標(biāo)系下(320x480):

為了自動(dòng)適應(yīng)分辨率,系統(tǒng)會(huì)根據(jù)設(shè)備實(shí)際分辨率,自動(dòng)給UIScreen.scale賦值,該屬性對(duì)開發(fā)者只讀。

在同樣的邏輯分辨率下,可以通過scale參數(shù)識(shí)別是iPhone3GS還是iPhone4(s)。以下基于nativeScale參數(shù),定義了探測(cè)機(jī)型是否為iPhone6+的宏

--------------------------------------------------------------------------------那么,同樣的分辨率和scale,如何區(qū)分機(jī)型iPhone4與4s、iPhone5與5s呢?通過[[UIDevice currentDevice] model]只能判別iPhone、iPad、iPod大類,要判斷iPhone具體機(jī)型型號(hào),則需要通過sysctlbyname("hw.machine")獲取詳細(xì)的設(shè)備參數(shù)信息予以甄別。

iPhone3GS時(shí)代,我們?yōu)橐粋€(gè)應(yīng)用提供圖標(biāo)(或按鈕提供貼圖),只需要icon.png。針對(duì)現(xiàn)在的iPhone4~6 Retina顯示屏,需要制作額外的@2x高分辨率版本。

Phone6+在實(shí)際渲染時(shí),downsampling/1.15(1242x2208-1080x1920),準(zhǔn)確的講,應(yīng)該是@2.46x。蘋果為方便開發(fā)者用的是@3x的素材,然后再縮放到@2.46x上。

參考: 一張圖幫你看懂 iPhone 6 Plus 屏幕分辨率

1

該方法使用系統(tǒng)緩存,適合表視圖重復(fù)加載圖像的情形。同時(shí)該API根據(jù)UIScreen的scale,自動(dòng)查找包含對(duì)應(yīng)高倍圖后綴名(@2x)的文件,如果找到二倍圖,則image.scale=2.0,對(duì)應(yīng)邏輯size大小以point度量(pixel度量的一半);如果沒找到設(shè)置默認(rèn)image.scale=1.0,對(duì)應(yīng)邏輯size大小同像素尺寸。因此,

2

這組方法創(chuàng)建的UIImage對(duì)象 沒有使用系統(tǒng)緩存 ,并且指定文件名必須包含明確的高倍圖后綴。

3

//考慮? 轉(zhuǎn)屏? 的影響,按照實(shí)際屏幕方向(UIDevice ?Orientation)的寬高

//不考慮轉(zhuǎn)屏的影響,只取豎屏(UIDevice OrientationPortrait)的寬高

待續(xù)


新聞標(biāo)題:ios開發(fā)適配,ios開發(fā)適配小窗播放視頻
文章鏈接:http://weahome.cn/article/dsgdpph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部