屏幕尺寸適配:一ios
在.pch中加入如下代碼,在定義每一個尺寸值的時候都調用下邊的宏objective-c
//以iphone7爲例 定義 view相關的寬高宏
#define IPHONEHIGHT(b) [UIScreen mainScreen].bounds.size.height*((b)/1334.0) #define IPHONEWIDTH(a) [UIScreen mainScreen].bounds.size.width*((a)/750.0) //有導航欄和分欄的狀況下高度 #define PhoneHight(d) ([UIScreen mainScreen].bounds.size.height-113.0)*((d)/1108.0) //僅僅有導航欄的狀況下高度 #define PHONEHIGHT(d) ([UIScreen mainScreen].bounds.size.height-64.0)*((d)/1206.0) #define ScreenWidth CGRectGetWidth([UIScreen mainScreen].bounds) #define ScreenHeight CGRectGetHeight([UIScreen mainScreen].bounds)
屏幕尺寸適配:二iphone
建立項目-建立PCH文件:若要建立.pch , 在other裏選擇 PCH file,並須要修改一下設置。在build settings 裏設置 Precompile Prefix Header的值爲YES,並設置Prefix Header的路徑。ui
建立一個擴展文件UIView+CreaFream.h,(如何建立擴展文件:建立一個objective-c file , 能夠選擇 category, extension ,protocol, empty 文件。選category 就能創建類別。)再不會了看網址 http://blog.csdn.net/idoshi201109/article/details/51735461spa
擦,差點忘了 PCH裏邊的東西了.net
.pchcode
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
//判斷ios版本
#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0 )
#import "UIView+CreaFream.h"
#define IPHONE4 ScreenRect.size.width ==320 && ScreenRect.size.height ==480
#define IPHONE5 ScreenRect.size.width ==320 && ScreenRect.size.height ==568
#define IPHONE6 ScreenRect.size.width ==375 && ScreenRect.size.height ==667
#define IPHONE6p ScreenRect.size.width ==414 && ScreenRect.size.height ==736
//#define iPhone7 iPhone7P 本身補充,不過和6的尺寸同樣的
#define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS
#endif /* PrefixHeader_pch */
.hblog
#import <UIKit/UIKit.h> @interface UIView (CreaFream) //只需一個設置間隔 大小的方法 +(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H; @end
.mip
#import "UIView+CreaFream.h" @implementation UIView (CreaFream) //實現方法 +(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H{ CGRect temptect = CGRectZero; //我的喜歡以iPhone 爲基準 進行比例大小的對比 if (IPHONE6) { temptect = CGRectMake(x,y, W, H); }else if ((IPHONE4)||(IPHONE5)){ CGFloat Xscole = 320/375.0; CGFloat Yscole = 480/667.0; temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H); }else if (IPHONE6p){ CGFloat Xscole = 414/375.0; CGFloat Yscole = 736/667.0; temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H); } return temptect; } @end
就是這樣了,在使用的時候,具體就是這樣的it
//在建立基於 UIView 的試圖控件的時候,Frame先不設定,如在建立一個UIImageView的時候:frame 之間用UIView 調用,就能夠適應其餘屏幕了 UIImageView * imgView = [[UIImageView alloc] initWithFrame:[UIView GetRectWithX:30 Y:30 Width:100 Heigth:100]];