簡介
在做ios開發(fā)的過程中欠雌,總會遇到一些用約束無法解決適配問題的情況,這個時候我們要計算出位置富俄,然后手動的用代碼控制控件的適配問題禁炒。
適配規(guī)則類的實現(xiàn)
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSUInteger, ScreenModel) {
ScreenModelInch35 = 0, //(320 * 480)
ScreenModelInch4,//(320 * 570)
ScreenModelBigger, //(375)
ScreenModelPlus //(414)
};
//首先寫一個方法來判斷目前屏幕的尺寸
static inline ScreenModel calScreenModel(){
NSInteger nativeWidth = [UIScreen mainScreen].bounds.size.width;
if (nativeWidth <= 320){
CGFloat nativeHeight = [UIScreen mainScreen].bounds.size.height;
if (nativeHeight > 480){
return ScreenModelInch4;
}
return ScreenModelInch35;
}
if (nativeWidth <= 375){
return ScreenModelBigger;
}
return ScreenModelPlus;
}
@interface Ruler : NSObject
@property (nonatomic, strong) id inch35; //3.5
@property (nonatomic, strong) id inch4; //4.0
@property (nonatomic, strong) id inchBigger;//4.7
@property (nonatomic, strong) id inchPlus; //5.5
@property (nonatomic, assign, readonly) id value;
@end
//外部運用的方法,四個參數(shù)分別是不同尺寸屏幕霍比,手動想控制的值
static inline Ruler* rulerMake(id inch35,id inch4,id inchBigger,id inchPlus){
Ruler *ruler = [[Ruler alloc] init];
ruler.inch35 = inch35;
ruler.inch4 = inch4;
ruler.inchBigger = inchBigger;
ruler.inchPlus = inchPlus;
return ruler;
}
#import "Ruler.h"
@implementation Ruler
//在value的getter方法里給來判斷要返回給頁面要用的值
- (id)value{
ScreenModel screenModel = calScreenModel();
switch (screenModel) {
case ScreenModelInch35:
return self.inch35;
break;
case ScreenModelInch4:
return self.inch4;
break;
case ScreenModelBigger:
return self.inchBigger;
break;
case ScreenModelPlus:
return self.inchPlus;
break;
default:
break;
}
return nil;
}
@end
這樣就可以根據(jù)不同的屏幕尺寸設(shè)置不同的位置了幕袱。
還有本文用到了內(nèi)聯(lián)函數(shù)悠瞬,內(nèi)聯(lián)函數(shù)的用處就不多說了,貼個鏈接吧浅妆。
(inline)內(nèi)聯(lián)函數(shù)在IOS開發(fā)中的使用