幾行程式碼幫你輕鬆完成ios螢幕適配
做ios也有幾個月了,原先是做安卓的,但是來公司的時候ios正好離職,所以需要學習ios的知識,但是因為一邊要忙工作,所以也沒用很多時間去紮實學習c基礎和oc比較深層的東西,也算是一邊學習一邊學習ios開發了, 這幾天也稍微閒下來了,所以寫部落格幫助 做ios沒多久的朋友們,一起進步 在做螢幕適配的時候發現ios的第三方適配框架masonry上手沒那麼快,而且每個控制元件都要寫挺多程式碼的,所以就在網上找有沒有比較簡潔的適配程式碼呢?! 後面找到不錯的很簡潔的程式碼 在專案中也用到了,還是很不錯的 接下來給大家詳細講解下 。
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property float autoSizeScaleX;
@property float autoSizeScaleY;
@end
@interface AppDelegate ()
#define ScreenHeight [[UIScreen mainScreen] bounds].size.height
#define ScreenWidth [[UIScreen mainScreen] bounds].size.width
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
if(ScreenHeight > 480){
// 這裡以(iPhone6)為準
myDelegate.autoSizeScaleX = ScreenWidth/375;
myDelegate.autoSizeScaleY = ScreenHeight/667;
}else{
myDelegate.autoSizeScaleX = 1.0;
myDelegate.autoSizeScaleY = 1.0;
}
return YES;
}
**這裡一定要在didFinishLaunchingWithOptions裡執行 注意
因為iPhone6螢幕的寬度和高度是375和667, 因此當螢幕尺寸大於iPhone6時, autoSizeScaleX和autoSizeScaleY即為當前螢幕和iPhone5尺寸的寬高比, 如果手機為Iphone6那麼螢幕比例為1,如果為Iphone6s,螢幕比放大,Iphone5就螢幕比縮小;
**
好了接下來我們自定義一個設定尺寸的方法
CG_INLINE CGRect
TS_CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
CGRect rect;
rect.origin.x = x * myDelegate.autoSizeScaleX;
rect.origin.y = y * myDelegate.autoSizeScaleY;
rect.size.width = width * myDelegate.autoSizeScaleX;
rect.size.height = height * myDelegate.autoSizeScaleY;
return rect;
}
這個直接寫在Macros檔案裡就好
接下來也順便貼上文字適配的程式碼 ,我們知道在所以所有螢幕裡設定的字型大小都是不變的,在Iphone6你設定一個20大小的font,在iphone5裡看起來就特別大,所以字型也要進行適配
#define MainScreenWidth [[UIScreen mainScreen] bounds].size.width
#define font(R) (R)*(MainScreenWidth)/375.0
因為美工給的標註是Iphone6的,所以
myDelegate.autoSizeScaleX = ScreenWidth/375;
myDelegate.autoSizeScaleY = ScreenHeight/667;和
#define font(R) (R)*(MainScreenWidth)/375.0
都是根據iPhone6來設定的 如果美工給的標註圖是其他尺寸的話,把上面提到的三個引數全部改為對應的尺寸,好的接下來演示一下在不同螢幕適配了的效果
使用方法
設定frame TS_CGRectMake()
self.btnForgetPassWord=[UIButton alloc]initWithFrame:TS_CGRectMake(161, 499, 54, 12);
設定字型大小 font()
[self.btnForgetPassWord setFont:[UIFont systemFontOfSize:font(12)]];
iphone6使用效果
iphone5使用效果
iphone6s Plus使用效果
**我們發現在三個機型上圖片都適配成功了,而且字型在Iphone5和Iphone6s plus上也進行等比例的放大和縮小了 但是這個適配也是有缺陷的 就是圖片的邊緣比較薄的話 在iphone5上偶然會出現邊緣比較虛 比如這種圖 其他裝置上正常顯示
下面是Demo下載地址,如果有問題 可以在下面留言 謝謝。