標籤:
十二:判斷裝置
//裝置名稱return [UIDevice currentDevice].name; //裝置型號,只可得到是何裝置,無法得到是第幾代裝置return [UIDevice currentDevice].model; //系統版本型號,如iPhone OS return [UIDevice currentDevice].systemVersion; //系統版本名稱,如6.1.3return [UIDevice currentDevice].systemName;//判斷是否為iPhone#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) //判斷是否為iPad#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) //判斷是否為ipod#define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"]) //判斷是否為iPhone5#define IS_IPHONE_5_SCREEN [[UIScreen mainScreen] bounds].size.height >= 568.0f && [[UIScreen mainScreen] bounds].size.height < 1024.0f
十三:枚舉的運用
typedef enum { //以下是枚舉成員 TestA = 0, TestB, TestC, TestD }Test;//枚舉名稱 亦可以如下定義(推薦:結構比較清晰),其中Test1為枚舉的名稱:typedef NS_ENUM(NSInteger, Test1) { //以下是枚舉成員 Test1A = 0, Test1B = 1, Test1C = 2, Test1D = 3 }; 枚舉的定義還支援位元運算的方式定義,向左移動幾位,它是二進位(等號後面必須等於1),轉為十進位,如下:typedef NS_ENUM(NSInteger, Test) { TestA = 1, //1 1 1 TestB = 1 << 1, //2 2 10 轉換成 10進位 2 TestC = 1 << 2, //4 3 100 轉換成 10進位 4 TestD = 1 << 3, //8 4 1000 轉換成 10進位 8 TestE = 1 << 4 //16 5 10000 轉換成 10進位 16 };可以針對上面進行調用運算:Test tes=Testb; //NSLog("%ld",tes);--->2Test newTes=(Testa|Testc); //NSLog("%ld",newTes);--->5
十四:IOS開發中的CGFloat、CGPoint、CGSize和CGRect
1、資料類型:
CGFloat: 浮點值的基本類型CGPoint: 表示一個二維座標系中的點CGSize: 表示一個矩形的寬度和高度CGRect: 表示一個矩形的位置和大小typedef float CGFloat;// 32-bittypedef double CGFloat;// 64-bitstruct CGPoint { CGFloat x; CGFloat y;};typedef struct CGPoint CGPoint;struct CGSize { CGFloat width; CGFloat height;};typedef struct CGSize CGSize;struct CGRect { CGPoint origin; CGSize size;};typedef struct CGRect CGRect;
注意:CGRect資料結構的高度和寬度可以是負數。例如,一個矩形的原點是[0.0,0.0]和大小是[10.0,10.0]。這個矩形完全等同原點是[10.0,10.0]和大小是[-10.0,-10.0]的矩形。
2、使用值來建立幾何元素的方法
CGPointMakeCGRectMakeCGSizeMakeCGPoint CGPointMake ( CGFloat x, CGFloat y);CGSize CGSizeMake ( CGFloat width, CGFloat height);CGRect CGRectMake ( CGFloat x, CGFloat y, CGFloat width, CGFloat height);CGFloat ten=10.0f;CGPoint point = CGPointMake(0.0f, 0.0f);CGSize size = CGSizeMake(10.0f, 10.0f);CGRect rect = CGRectMake(point.x, point.y, size.width, size.height);NSLog(@"ten: %f", ten);NSLog(@"point: %@", NSStringFromCGPoint(point));NSLog(@"size: %@", NSStringFromCGSize(size));NSLog(@"rect: %@", NSStringFromCGRect(rect));
十五:ios動態擷取UILabel的高度和寬度
在使用UILabel存放字串時,經常需要擷取label的長寬資料,本文列出了部分常用的計算方法。
1.擷取寬度,擷取字串不折行單行顯示時所需要的長度
CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];
註:如果想得到寬度的話,size的width應該設為MAXFLOAT。
2.擷取高度,擷取字串在指定的size內(寬度超過label的寬度則換行)所需的實際高度.
CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
註:如果想得到高度的話,size的height應該設為MAXFLOAT。
3.實際編程時,有時需要計算一段文字最後一個字元的位置,並在其後添加圖片或其他控制項(如info表徵圖),下面代碼為計算label中最後一個字元後面一位的位置的方法。
CGSize sz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, 40)];CGSize linesSz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];if(sz.width <= linesSz.width) //判斷是否折行{ lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y); }else { lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height); }
十六:帶屬性的字串(NSMutableAttributedString)的使用
1.建立對象 NSString *original = @"今天你還好嗎?"; NSMutableAttributedString *attrTitle = [[NSMutableAttributedStringalloc] initWithString:original];2.設定顏色(NSForegroundColorAttributeName代表要設定顏色, value代表值, range 代表範圍) /** 其他設定: 1.NSForegroundColorAttributeName //顏色 2.NSFontAttributeName //字型 3.NSBackgroundColorAttributeName //背景色 //還有其他的很多的屬性,可以自己去看蘋果的API,這裡不再詳述 */ [attrTitle addAttribute:NSForegroundColorAttributeName value:[UIColorblueColor] range:NSMakeRange(0, 2)];3.添加到Label中 UILabel *label = [[UILabel alloc] init]; label.frame = CGRectMake(100, 100, 100, 40); [label setAttributedText:attrTitle]; [self.view addSubview:label];
iOS開發基礎知識--片段3