IOS開發基礎知識--碎片3

1:判斷設備html

//設備名稱
return [UIDevice currentDevice].name;
 
//設備型號,只可獲得是何設備,沒法獲得是第幾代設備
return [UIDevice currentDevice].model;
 
//系統版本型號,如iPhone OS 
return [UIDevice currentDevice].systemVersion;
 
//系統版本名稱,如6.1.3
return [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

2:枚舉的運用ios

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);--->2
Test newTes=(Testa|Testc);   //NSLog("%ld",newTes);--->5

3:IOS開發中的CGFloat、CGPoint、CGSize和CGRectweb

一、數據類型:編程

CGFloat: 浮點值的基本類型
CGPoint: 表示一個二維座標系中的點
CGSize: 表示一個矩形的寬度和高度
CGRect: 表示一個矩形的位置和大小

typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit

struct 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]的矩形。數據結構

二、使用值來建立幾何元素的方法字體

CGPointMake
CGRectMake
CGSizeMake

CGPoint 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));

4:ios動態獲取UILabel的高度和寬度url

在使用UILabel存放字符串時,常常須要獲取label的長寬數據,本文列出了部分經常使用的計算方法。spa

1.獲取寬度,獲取字符串不折行單行顯示時所須要的長度.net

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];code

注:若是想獲得寬度的話,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);  
} 

 5:帶屬性的字符串(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];

 6:UIWebView加載PDF遠端文件,並能夠進行放大縮小簡單的顯示;

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; webView.scalesPageToFit = YES; [self.view addSubview:webView]; NSString *path = @"http://temall.net:9090/html/reader.pdf"; //[[NSBundle mainBundle] pathForResource:@"SDK" ofType:@"pdf"]; //加載本地文件PDF NSURL *url = [NSURL URLWithString:path]; //[NSURL fileURLWithPath:path]; //加載本地文件PDF NSURLRequest *request = [NSURLRequest requestWithURL:url]; if (request) { [webView loadRequest:request]; }

相關文章
相關標籤/搜索