iOS開發基礎知識--片段3

來源:互聯網
上載者:User

標籤:

十二:判斷裝置

//裝置名稱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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.