1. 程式人生 > >iOS螢幕適配的幾種方式

iOS螢幕適配的幾種方式

在iOS開發中,會經常碰到螢幕適配的問題,下面來說一下自己在專案開發中遇到的幾種螢幕適配的方式.

第一種:

利用寬高比,在不同的螢幕中來進行對控制元件的位置與控制元件的寬高進行等比例縮放.選定一個型號的螢幕的寬高為基準,進行等比例縮放.例如以iPhone6或者iPhone6s為基準.

其寬高分別是375與667.Iphone6ScaleWidth =  [UIScreen mainScreen].bounds.size.width/375; Iphone6ScaleHeight = [UIScreen mainScreen].bounds.size.height/667;

如果是iPhone6或者iPhone6s則Iphone6ScaleWidth

Iphone6ScaleHeight的值都為1.但是此方法對於iPhone5之後的型號可以適用.因為我們知道iPhone4或者iPhone4s尺寸是320x480.iPhone5是320x568.所以對於4或者4s來說計算得到的寬高比不相同.可能會造成一個方形控制元件,在iPhone5之後的機型上顯示的都是正方形.但是在4或者4s上顯示的是長方形.需要進行自己的判斷(目前來說4或者4s市場上已經不多見了).

同時也可以在代理增加兩個屬性,寬高比例屬性,例如:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property float autoSizeScaleX;
@property float autoSizeScaleY;

在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    if(CurrentScreenHeight > 480){
        nowAppDelegate().autoSizeScaleX = CurrentScreenWidth/320.0;
        nowAppDelegate().autoSizeScaleY = CurrentScreenHeight/568.0;
    }else{
        nowAppDelegate().autoSizeScaleX = 1.0;其中nowAppDelegate

() = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        nowAppDelegate().autoSizeScaleY = 1.0;
    }

}

在專案對於控制元件的位置和尺寸乘以這兩個縮放比例.

第二種:

使用autoLayout進行螢幕適配.程式碼如下:

    UIView *headView = [[UIView alloc] init];
    headView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:headView];
    headView.backgroundColor = [UIColor redColor];
    NSLayoutConstraint *headViewLeft = [NSLayoutConstraint constraintWithItem:headView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
    NSLayoutConstraint *headViewTop = [NSLayoutConstraint constraintWithItem:headView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
    NSLayoutConstraint *headViewRight = [NSLayoutConstraint constraintWithItem:headView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
    NSLayoutConstraint *headViewHeight = [NSLayoutConstraint constraintWithItem:headView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:0 constant:200];
    self.headHeightCons = headViewHeight;
    [self.view addConstraints:@[headViewTop,headViewLeft,headViewRight]];
    [headView addConstraint:headViewHeight];
    

    UIImage *imageLol = [UIImage imageNamed:@"lol"];
    UIImageView *imageViewLol = [[UIImageView alloc] initWithImage:imageLol];
    [headView addSubview:imageViewLol];
    imageViewLol.translatesAutoresizingMaskIntoConstraints = NO;
    [imageViewLol setContentMode:UIViewContentModeScaleAspectFill];

    
    NSLayoutConstraint *imageLolViewLeft = [NSLayoutConstraint constraintWithItem:imageViewLol attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:headView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
    NSLayoutConstraint *imageViewLolViewTop = [NSLayoutConstraint constraintWithItem:imageViewLol attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:headView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
    NSLayoutConstraint *imageViewLolViewRight = [NSLayoutConstraint constraintWithItem:imageViewLol attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:headView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
    NSLayoutConstraint *imageViewLolViewBottom = [NSLayoutConstraint constraintWithItem:imageViewLol attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:headView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
    [headView addConstraints:@[imageLolViewLeft,imageViewLolViewTop,imageViewLolViewRight,imageViewLolViewBottom]];

第三種:使用框架Masonry進行螢幕適配.讀者可以自己找到框架或者demo看下,在這裡就不多說了.

相關推薦

iOS螢幕方式

在iOS開發中,會經常碰到螢幕適配的問題,下面來說一下自己在專案開發中遇到的幾種螢幕適配的方式. 第一種: 利用寬高比,在不同的螢幕中來進行對控制元件的位置與控制元件的寬高進行等比例縮放.選定一個型號的螢幕的寬高為基準,進行等比例縮放.例如以iPhone6或者iPhone6

行程式碼幫你輕鬆完成ios螢幕

做ios也有幾個月了,原先是做安卓的,但是來公司的時候ios正好離職,所以需要學習ios的知識,但是因為一邊要忙工作,所以也沒用很多時間去紮實學習c基礎和oc比較深層的東西,也算是一邊學習一邊學習ios開發了, 這幾天也稍微閒下來了,所以寫部落格幫助 做ios沒

總結iOS App開發中控制螢幕旋轉的方式

在iOS6之前的版本中,通常使用 shouldAutorotateToInterfaceOrientation 來單獨控制某個UIViewController的方向,需要哪個viewController支援旋轉,只需要重寫shouldAutorotateToInterfa

<iOS螢幕> iPhoneX SafeArea - 安全區域

一. 前言 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "PingFang SC"; color: #000000 } span.s1 { } span.s2 { font: 13.0px "Helvetica Neue" } 本文的出發點是對

iOS 連線外設的方式

    聯絡人:石虎 QQ:1224614774   暱稱: 嗡嘛呢叭咪哄                         &

ios 螢幕 心得

重點內容 首先 UI設計一般是按照4.7的螢幕設計。 由於 iphone 5 以上 螢幕的比例 相似。只有 4s 螢幕比例比較特殊。 要適配全部機型。我一般都是 在4s上 寫一個scrollview,將螢幕 變成與5的大小相同。接下來就簡單了 這是一個UIView的類別 這是.

iOS螢幕 iPhone X 、iPhone XR、iPhone XS 、iPhone XS Max

隨著蘋果爸爸釋出了 超牛叉的iPhone、開發者的適配工作要開始了。 停,?。 如果app 適配過 iPhone X、新機子不用怎麼適配的了。 如果你之前的適配、都是寫死的。 建議你寫活吧。萬一,蘋果爸爸釋出全面屏的iPhone呢? 先看看新手機嘛  新手機和 iPhone X相同、都是劉海屏、 適配劉海

iOS螢幕

最近準備學習OC,先簡單地搜尋一下螢幕適配,發現沒有特別省事的適配方法,決定按照android適配的方法簡單地寫一個適配方案。希望有人可以受到啟發,寫出一套懶人適配方案,還請記得告訴我一下,謝謝。另外,由於接觸OC不久,所以很多常識性的東西都還不懂,請見諒。

iOS 執行緒同步方式

多執行緒同步目的有以下幾個方面:第一,對一段程式碼的執行進行保護,如果同時執行一段程式碼,中間的臨時變數可能會互相干擾造成結果不對;第二,對資源的保護,多個執行緒執行不同的程式碼,但是可能涉及同一個資源;第三,訊息傳遞,一個執行緒通知另外一個執行緒發生了一件事。

IOS 之資料庫 的方式

在iOS開發過程中,不管是做什麼應用,都會碰到資料儲存的問題。將資料儲存到本地,能夠讓程式的執行更加 流暢,不會出現讓人厭惡的菊花形狀,使得使用者體驗更好。下面介紹⼀一下資料儲存的方式: 1.NSKeyedArchiver:採用歸檔的形式來儲存資料,該資料物件需要遵守NSCoding協議,並且該物件對應

iOS 資料儲存的方式

在iOS開發過程中常用的本地化儲存有五種方式: 1.plist (XML屬性列表歸檔 NSArray\NSDictionary) 2.preference (偏好設定\NSUserDefaults) (本質還是通過plist來儲存資料,但是使用更加簡單,無需關注檔案、資料夾

rem、px、em(手機端h5頁面螢幕方法)

px px畫素(pixel):相對長度單位。相對於顯示器螢幕解析度而言。pc端使用px倒也無所謂,可是在移動端,因為手機解析度種類頗多,不可能一個個去適配,這時px就顯得非常無力,所以就要考慮em和r

騰訊優測優分享 | 談談移動端螢幕方法

騰訊優測是專業的移動雲測試平臺,自動化測試提供全面相容性適配測試,雲真機提供遠端真機租用服務,優分享不定時提供大量移動研發及測試相關乾貨! 移動端web開發相對於PC端web開發,我們可以慶幸不用相容那麼多瀏覽器了,但是隨之而來的卻是各種螢幕尺寸的適配,個人覺得,比PC端還

iOS開發之App開發團隊必須知道的 iOS 11 更新點iPhoneX的螢幕

WWDC 2017 已經過去差不多一個季度了,最近隨著 Xcode 9 正式版以及 iPhone 8、iPhone X 的釋出,iOS 11 的全面適配也被提上了日程。我整理了一下更新點,包括開發、設計、產品甚至是市場都應該注意的點,分享出來希望對大家有所幫助。 新增框架 ARKit iOS 11 引入了

iOS,iOS自動佈局的高階用法(autoresizing,Masonry)

熟悉iOS開發的人,可能都知道,iOS6出來以後,autolayout自動佈局就出現了,但是剛開始大家都不怎麼用,直到iPhone 5s、iPhone6出來後,螢幕變得越來越多樣,單純用if來判斷尺寸已完全不能滿足了,自動佈局才逐漸走程序序猿的程式設計程式碼中。Autolayout自動佈局為什麼能被大家所常用

android螢幕的兩方式

適配中小型專案; 直接上程式碼,程式碼中有註釋,考慮效能方面的原因,只適合中小型的專案,專案大了,會影響效能   step1: /** * 為了方便框架內部使用application 和得到context上下文 用 */ public class MyApplicat

學習一極低成本的Android螢幕方式

再回來看計算公式: px = density * dp; density = dpi / 160; px = dp * (dpi / 160); 而為什麼除以160,在Google官方文件也有說明,密度無關畫素(dp)等於 160 dpi 螢幕上的一個

螢幕常用方法

首先在開發者我們要養成一個良好的開發習慣,遵循一些好的螢幕適配原則: 開發前部分階段:比如儘量不用AbsoluteLayout(絕對佈局),多用線性佈局與相對佈局,設定寬高邊距等尺寸用dp(dip),

iOS代碼加密的方式

red .sh 最簡 應用安全 adr 變量名 尋找 技術分享 混淆 眾所周知的是大部分iOS代碼一般不會做加密加固,因為iOS APP一般是通過AppStore發布的,而且蘋果的系統難以攻破,所以在iOS裏做代碼加固一般是一件出力不討好的事情。萬事皆有例外,不管iOS、a

iOS螢幕

螢幕適配 1、螢幕適配的發展過程: 程式碼計算frame -> autoreszing(父控制元件和子控制元件的關係) -> autolayout(任何控制元件都可以產生關係) -> sizeclass   沒有螢幕適配,直接使用frame固定子控制元件的