iOS零散知识点
1.通過UIDevice類的model屬性可以得知當前設備是什么,比如模擬器、iPhone、iPad還是iPod。
2.使屏幕不變暗:[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
3.UILabel多行文本(1)UILabel可以顯示多行文本,它有一個屬性叫numberOfLines,可以制定行的數量,超過則不顯示。(2)當Label的尺寸超過指定行數對應的高度時,文字會在UILabel的垂直中間的位置上,上下會留白。(3)當numberOfLines屬性指定為0時,則不限制行數。這時候就需要根據顯示的文本內容來確定對應顯示區域的大小,然后動態設置label的size。(4)使用這個特性,會比UITextView有一個好處:UITextView顯示內容時上下左右會留空白,造成在確定其Frame時會存在誤差。而UILabel則不存在這個問題。
4.UISegmentControl類中兩個沒有用過的方法:可以對UISegmentControl界面進行定制(1)-setWidth:forSegmentAtIndex:(2)-setImage:forSegmentAtIndex;
5.去掉iOS桌面圖標上的高亮效果的辦法:在info.plist文件中加一個字段,Icon already includes gloss effects,選中,意思就是圖標已經包含高亮效果,不用系統再自動添加了。
6.UITableView有兩個屬性,tableHeaderView,tableFooterView,用來添加表視圖的頭和尾,它不同于section的頭和尾。
7.給控件加邊框,圓角:(1)添加QuartzCore.framework(2)代碼:[view.layer setBorderColor:[[UIColor redColor] CGColor]];[view.layer setBorderWidth:1.0f];[view.layer setCornerRadius:8.0f];[view.layer setMaskToBounds:YES];
8.自定義導航欄視圖的幾個方法:(1)添加自定義title視圖:self.navigationItem.titleView = xxx;(2)添加左右自定義按鈕:? ? UIBarButtonItem *btItem = [[UIBarButtonItem alloc] initWithCustomView:xxx];? ? self.navigationItem.rightBarButtonItem = btItem;? ? 或者:? ? self.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:btItem];(3)定制導航欄背景:? ? iOS5之后,使用UINavigationBar的setBackgroundImage:forBarMetrics:方法可以定制導航欄背景。? ? iOS5之前,新增一個UINavigationBar的擴展,重寫drawRect方法,代碼如下:? ? -(void)drawRect:(CGRect)rect { ?? ? ? ? UIImage *image = [UIImage imageNamed: @"navBarBK.png"]; ?? ? ? ? [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; ?? ? }
9.裁剪圖片:UIImage *image = xxx;CGImageRef newImageRef = CGImageCreateWithImageInRect(image.CGImage,rect);UIImage *newImage = [[UIImage alloc] initWIthCGImage:newImageRef];
10.讓iOS程序在iOS4.0以及之后沒有多任務,即按下home鍵之后程序直接退出:在info.plist中加入一個字段,Application does not run in bacground,打鉤。
11.獲取info.plist的內容:[[NSBundle mainBundle] infoDictionary];
12.屏幕截圖:UIView *currentView = xxx;UIGraphicsBeginImageContext(currentView.bounds.size);[currentView.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();//保存到相冊UIImageWriteToSavedPhotosAlbum(viewImage,nil,nil,nil);
13.Security.framework(1)使用Security.framework可以實現鑰匙串訪問,讀寫,但是只能在真機上使用,模擬器會報錯??梢杂脕肀4嬉恍┧矫軘祿?#xff0c;不用再為加密煩惱。(2)蘋果封裝了KeychainItemWrapper類,用來對鑰匙串進行操作。該類通過一個表明身份的字符串和訪問組字符串來初始化。實例方法如下:- (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;- (void)setObject:(id)inObject forKey:(id)key;- (id)objectForKey:(id)key;- (void)resetKeychainItem;(3)鑰匙鏈不會隨著程序的卸載或者固件重裝被清除,可以用來維護持久的信息,例如可以判斷某臺設備是否是第一次安裝某軟件。
14.loadView和ViewDidLoad的區別(1)viewDidLoad方法在控制器view創建成功之后調用,不管是通過nib初始化還是通過loadView方法初始化的。(2)當view被請求,但是view為nil時,loadView方法就會被調用,一般用于使用代碼來生成控件。
15.在應用中加入WIFI提示框的方法:如果iOS程序用到了WIFI,在沒有WIFI網絡連接的情況下,需要WIFI連接提醒,只需要在info.plist中加入如下兩個鍵值即可:Applicatioin uses Wi-Fi ? ?YESSBUsesNetWork ? ? ? ? ? ? ? ?3
16.通過字符串加載類名:id object = [[NSClassFromString(@"Class1") alloc] init];?效果和下面一樣:id object = [[Class1 alloc] init];但是如果Class1不存在,上面的方法會返回nil,而下面的方法會報錯。
17.UIWebView的使用:(1)使用webView的loadRequest方法,可以加載本地或者網絡的html文件。(2)使用UIWebViewDelegate,可以獲取瀏覽器網頁開始加載和加載完畢事件,從而可以用來根據這些狀態添加我們自己的UI界面,比如等待視圖。也可以獲取瀏覽器當前打開網頁的網址,根據當前網址,我們也可以有自己的UI動作。(3)通過stringByEvaluatingJavaScriptFromString方法,可以在瀏覽器控件外部調用JavaScript腳本。
18.當應用crash時,捕獲錯誤日志:(1)首先聲明發生異常時的回調函數,格式如下:? ? ?void MyUncaughtExceptionHandler(NSException *exception) {}? ? ?通過NSException對象,可以獲取錯誤時間,錯誤原因,錯誤堆棧。()設置捕獲回調:NSSetUncaughtExceptionHandler(&MyUncaughtExceptionHandler);
19.MPMoviePlayerController可以播放在線視頻和音頻(只支持Http Live Stream協議),以及本地的視頻音頻。支持的格式僅限于蘋果規定支持的格式。
20.@Class和#import的區別:(1)import會包含這個類的所有信息,包含實例變量和方法。而@Class只是告訴編譯器,聲明的是類的名稱,至于這個類是如何定義的,先不用考慮,后面再告訴你。(2)一般@Class只放在interface中,在實現類中,同時需要用@import來告訴編譯器類里面的具體內容。(3)使用@Class會增加編譯效率。(4)使用@Class可以解決循環依賴關系的問題。
21.StringWithFormat和@"str"的區別:(1)@"str",沒有引用計數效果,引用計數為-1,調用retain也沒用。(2)stringWithFormat使用自動釋放,創建完成時,引用計數為1。
22.iOS中,int是4個字節,short是2個字節,char是1個字節,long int也是4個字節。一個字節8位。
23.@public 、@protected 、@private只會影響它的子類的訪問權限,不會影響到類本身變量的訪問權限。
24.在LLVM3.0編譯器中,支持將實例變量寫到實現文件中,可實現私有的成員變量。示例代碼如下:@implementation MyViewController{? ? NSString *name;}
25.set方法的寫法:if(_value != value){ [_value release]; _value = [value retain];}
26.RunLoop監視操作系統的輸入源,如果有事件數據,runLoop就發送消息,通知各個對象。它是一個一個事件處理的循環,用來不停的調度工作以及處理輸入事件。使用它的目的是讓你的線程在有工作的時候忙于工作,而沒工作的時候處于休眠狀態。一個UI事件,一個Timer call,delegate call,都會是一個RunLoop。
27.自動釋放池的release和drain的區別:(1)release在GC(自動內存回收)環境下是一個空操作,不做任何事情。(2)在引用計數環境下,drain的行為和release是一樣的,但是在GC環境下,它會調用object_collect_if_needed來觸發GC。
28.NSInteger和int的區別:在蘋果的API實現中,NSInteger時一個封裝,它會識別當前操作系統的位數,自動但會最大的類型,位數不一樣。封裝可以查看蘋果文檔。
29.進程間通訊的方式(iOS中基本用不到):管道,信號量,共享內存段,消息隊列,以及socket。
30.線程通訊的方式:performSelector。比如:performSelector:onThread:withObject:waitUntilDone:performSelectorOnMainThread:withObject:waitUntilDone:cancelPreviousPerformRequestsWithTarget:selector:object:
31.如果一個NSArray中保存的是同種類型的對象,并且想對其中的每個對象都調用一個方法,可以使用makeObjectsPerformSelector:withObject:方法。
32.NSTime不是一個精準的定時器,當操作耗時很長或者阻塞,就可能錯過一個點。
33.進程和線程的區別:(1)線程是CPU操作的最小單元,進程是系統資源分配時的最小單元。(2)線程間共享內存空間,進程的內存空間時獨立的。(3)進程中包含線程。
34.UIScrollView主要使用了裝飾器模式。Cocoa通過利用NSClipView實例裝飾對象提供了滾動技術,讓用戶控制對象的哪個部分是可見的。裝飾器模式通過復合給對象添加了公共的可重用能力,用于替換通過子類化添加這些能力,可以在運行時添加或者配置裝飾器。
35.SQLite相關api:sqlite3_open、sqlite3_prepare_v2、sqlite3_bind_xxx、sqlite3_step、sqlite3_column_xxx、sqlite3_finalize、sqlite3_close。
36.類目(Catagory)(1)使用類目,可以在不子類化的情況下,給一個類添加功能。(2)當類目中的方法名和類中的方法名沖突時,類目的方法會比類以及子類中方法的優先級高。(3)如果不提供類名,則類目中定義的方法被視為必須實現的API,如果缺少實現代碼,則編譯器會報警。
37.將NSLog的內容重定向至文件:freopen([logFilePath cStringUsingEncoding:NSASCCIIEncoding], "a+", stderr);
38.extern關鍵字使用(1)首先申明一個變量,比如:NSArray *resArray; 然后extern NSArray *resArray;? ? ?這樣,在項目里面的任何類里面,都可以訪問resArray這個變量。? ? ?此方法可以在一些需要共享數據的場合使用。(2)extern "C",表示編譯生成的內部符號使用c約定,大多出現在交叉C編譯環境中。? ? __cplusplus只在c++中有定義。
39.從iOS4.0開始,iOS類庫增加了對正則表達式的支持,類名為NSRegularExpression。
40.從iOS5.0開始,iOS類庫增加了對JSON的支持,類名為NSJsonSerialization。
41.在編譯環境中添加"NSZombieEnabled"變量,并且置為YES,可以捕獲EXE_BAD_ACCESS錯誤,能讓錯誤提示的更精細。但是添加了此變量之后,即使對象的引用計數為0,內存也不會被回收,應用程序的內存使用會一直增加。所以在編譯完成之后,要把這個變量刪掉。
42.自定義TableViewCell的背景顏色和選擇后的顏色:將TableViewCell的backgroundView和SelectBackGroundView修改成指定的View。
43.tableView:willDisplayCell:forRowAtIndexPath方法:這個方法在TableView要使用cell去繪制row之前調用,這個方法給代理機會去設置基于狀態的屬性,并且早于TableView,比如選擇狀態的顏色或者背景的顏色等。
44.修改UIAlterView默認的Frame高度,使用委托:-(void)willPresentAlertView:(UIAlertView*)alertView {? ? alertView.frame =CGRectMake(5.f,1.f,100.f,200.f);}
45.由于TableView的cell重用機制,導致多個圖片下載事件的回調會指向同一個cell。解決辦法:在圖像下載事件中記錄當前cell的row,同時將cell的tag設置為row,當圖片下載完畢時,先判斷下載事件中記錄的row和cell的tag是不是一致,如果一致,則顯示圖片到cell上,如果不一致,則不顯示圖像。
46.UIScrollView可以放大縮小顯示的內容,它有一個參數用來控制縮放的幅度,zoomScale,默認是1.0。
47.讓UIScrollView支持捏合動作:(1)實現代理方法:viewForZoomingInScrollView,返回當前需要伸縮的視圖對象,比如UIImageView。當兩個手指捏合時,視圖對象的size的值將會被改變。(2)設置scrollView的最大和最小伸縮倍數,maximumZoomScale、minimumZoomScale。(3)重寫scrollView的layoutSubviews方法,在此方法中,可以根據需要重置視圖對象的x和y值,后者根據視圖的size屬性,重置scrollView的contentSize。
48.ios自定義鍵盤:UITextField有兩個屬性:inputView,inputAccessoryView。(1)inputView含義:輸入界面。當你想要某輸入框的輸入鍵盤使用自定義的鍵盤的話,可以自己創建一個鍵盤,然后把鍵盤視圖賦值給這個屬性。當點擊此輸入框時,彈出的鍵盤就是我們自己的鍵盤了。(2)inputAccessoryView含義:輔助輸入界面,一般放在鍵盤的上方??梢栽黾宇愃朴?#34;上一項"、"下一項"、"完成"等功能。
2.使屏幕不變暗:[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
3.UILabel多行文本(1)UILabel可以顯示多行文本,它有一個屬性叫numberOfLines,可以制定行的數量,超過則不顯示。(2)當Label的尺寸超過指定行數對應的高度時,文字會在UILabel的垂直中間的位置上,上下會留白。(3)當numberOfLines屬性指定為0時,則不限制行數。這時候就需要根據顯示的文本內容來確定對應顯示區域的大小,然后動態設置label的size。(4)使用這個特性,會比UITextView有一個好處:UITextView顯示內容時上下左右會留空白,造成在確定其Frame時會存在誤差。而UILabel則不存在這個問題。
4.UISegmentControl類中兩個沒有用過的方法:可以對UISegmentControl界面進行定制(1)-setWidth:forSegmentAtIndex:(2)-setImage:forSegmentAtIndex;
5.去掉iOS桌面圖標上的高亮效果的辦法:在info.plist文件中加一個字段,Icon already includes gloss effects,選中,意思就是圖標已經包含高亮效果,不用系統再自動添加了。
6.UITableView有兩個屬性,tableHeaderView,tableFooterView,用來添加表視圖的頭和尾,它不同于section的頭和尾。
7.給控件加邊框,圓角:(1)添加QuartzCore.framework(2)代碼:[view.layer setBorderColor:[[UIColor redColor] CGColor]];[view.layer setBorderWidth:1.0f];[view.layer setCornerRadius:8.0f];[view.layer setMaskToBounds:YES];
8.自定義導航欄視圖的幾個方法:(1)添加自定義title視圖:self.navigationItem.titleView = xxx;(2)添加左右自定義按鈕:? ? UIBarButtonItem *btItem = [[UIBarButtonItem alloc] initWithCustomView:xxx];? ? self.navigationItem.rightBarButtonItem = btItem;? ? 或者:? ? self.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:btItem];(3)定制導航欄背景:? ? iOS5之后,使用UINavigationBar的setBackgroundImage:forBarMetrics:方法可以定制導航欄背景。? ? iOS5之前,新增一個UINavigationBar的擴展,重寫drawRect方法,代碼如下:? ? -(void)drawRect:(CGRect)rect { ?? ? ? ? UIImage *image = [UIImage imageNamed: @"navBarBK.png"]; ?? ? ? ? [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; ?? ? }
9.裁剪圖片:UIImage *image = xxx;CGImageRef newImageRef = CGImageCreateWithImageInRect(image.CGImage,rect);UIImage *newImage = [[UIImage alloc] initWIthCGImage:newImageRef];
10.讓iOS程序在iOS4.0以及之后沒有多任務,即按下home鍵之后程序直接退出:在info.plist中加入一個字段,Application does not run in bacground,打鉤。
11.獲取info.plist的內容:[[NSBundle mainBundle] infoDictionary];
12.屏幕截圖:UIView *currentView = xxx;UIGraphicsBeginImageContext(currentView.bounds.size);[currentView.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();//保存到相冊UIImageWriteToSavedPhotosAlbum(viewImage,nil,nil,nil);
13.Security.framework(1)使用Security.framework可以實現鑰匙串訪問,讀寫,但是只能在真機上使用,模擬器會報錯??梢杂脕肀4嬉恍┧矫軘祿?#xff0c;不用再為加密煩惱。(2)蘋果封裝了KeychainItemWrapper類,用來對鑰匙串進行操作。該類通過一個表明身份的字符串和訪問組字符串來初始化。實例方法如下:- (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;- (void)setObject:(id)inObject forKey:(id)key;- (id)objectForKey:(id)key;- (void)resetKeychainItem;(3)鑰匙鏈不會隨著程序的卸載或者固件重裝被清除,可以用來維護持久的信息,例如可以判斷某臺設備是否是第一次安裝某軟件。
14.loadView和ViewDidLoad的區別(1)viewDidLoad方法在控制器view創建成功之后調用,不管是通過nib初始化還是通過loadView方法初始化的。(2)當view被請求,但是view為nil時,loadView方法就會被調用,一般用于使用代碼來生成控件。
15.在應用中加入WIFI提示框的方法:如果iOS程序用到了WIFI,在沒有WIFI網絡連接的情況下,需要WIFI連接提醒,只需要在info.plist中加入如下兩個鍵值即可:Applicatioin uses Wi-Fi ? ?YESSBUsesNetWork ? ? ? ? ? ? ? ?3
16.通過字符串加載類名:id object = [[NSClassFromString(@"Class1") alloc] init];?效果和下面一樣:id object = [[Class1 alloc] init];但是如果Class1不存在,上面的方法會返回nil,而下面的方法會報錯。
17.UIWebView的使用:(1)使用webView的loadRequest方法,可以加載本地或者網絡的html文件。(2)使用UIWebViewDelegate,可以獲取瀏覽器網頁開始加載和加載完畢事件,從而可以用來根據這些狀態添加我們自己的UI界面,比如等待視圖。也可以獲取瀏覽器當前打開網頁的網址,根據當前網址,我們也可以有自己的UI動作。(3)通過stringByEvaluatingJavaScriptFromString方法,可以在瀏覽器控件外部調用JavaScript腳本。
18.當應用crash時,捕獲錯誤日志:(1)首先聲明發生異常時的回調函數,格式如下:? ? ?void MyUncaughtExceptionHandler(NSException *exception) {}? ? ?通過NSException對象,可以獲取錯誤時間,錯誤原因,錯誤堆棧。()設置捕獲回調:NSSetUncaughtExceptionHandler(&MyUncaughtExceptionHandler);
19.MPMoviePlayerController可以播放在線視頻和音頻(只支持Http Live Stream協議),以及本地的視頻音頻。支持的格式僅限于蘋果規定支持的格式。
20.@Class和#import的區別:(1)import會包含這個類的所有信息,包含實例變量和方法。而@Class只是告訴編譯器,聲明的是類的名稱,至于這個類是如何定義的,先不用考慮,后面再告訴你。(2)一般@Class只放在interface中,在實現類中,同時需要用@import來告訴編譯器類里面的具體內容。(3)使用@Class會增加編譯效率。(4)使用@Class可以解決循環依賴關系的問題。
21.StringWithFormat和@"str"的區別:(1)@"str",沒有引用計數效果,引用計數為-1,調用retain也沒用。(2)stringWithFormat使用自動釋放,創建完成時,引用計數為1。
22.iOS中,int是4個字節,short是2個字節,char是1個字節,long int也是4個字節。一個字節8位。
23.@public 、@protected 、@private只會影響它的子類的訪問權限,不會影響到類本身變量的訪問權限。
24.在LLVM3.0編譯器中,支持將實例變量寫到實現文件中,可實現私有的成員變量。示例代碼如下:@implementation MyViewController{? ? NSString *name;}
25.set方法的寫法:if(_value != value){ [_value release]; _value = [value retain];}
26.RunLoop監視操作系統的輸入源,如果有事件數據,runLoop就發送消息,通知各個對象。它是一個一個事件處理的循環,用來不停的調度工作以及處理輸入事件。使用它的目的是讓你的線程在有工作的時候忙于工作,而沒工作的時候處于休眠狀態。一個UI事件,一個Timer call,delegate call,都會是一個RunLoop。
27.自動釋放池的release和drain的區別:(1)release在GC(自動內存回收)環境下是一個空操作,不做任何事情。(2)在引用計數環境下,drain的行為和release是一樣的,但是在GC環境下,它會調用object_collect_if_needed來觸發GC。
28.NSInteger和int的區別:在蘋果的API實現中,NSInteger時一個封裝,它會識別當前操作系統的位數,自動但會最大的類型,位數不一樣。封裝可以查看蘋果文檔。
29.進程間通訊的方式(iOS中基本用不到):管道,信號量,共享內存段,消息隊列,以及socket。
30.線程通訊的方式:performSelector。比如:performSelector:onThread:withObject:waitUntilDone:performSelectorOnMainThread:withObject:waitUntilDone:cancelPreviousPerformRequestsWithTarget:selector:object:
31.如果一個NSArray中保存的是同種類型的對象,并且想對其中的每個對象都調用一個方法,可以使用makeObjectsPerformSelector:withObject:方法。
32.NSTime不是一個精準的定時器,當操作耗時很長或者阻塞,就可能錯過一個點。
33.進程和線程的區別:(1)線程是CPU操作的最小單元,進程是系統資源分配時的最小單元。(2)線程間共享內存空間,進程的內存空間時獨立的。(3)進程中包含線程。
34.UIScrollView主要使用了裝飾器模式。Cocoa通過利用NSClipView實例裝飾對象提供了滾動技術,讓用戶控制對象的哪個部分是可見的。裝飾器模式通過復合給對象添加了公共的可重用能力,用于替換通過子類化添加這些能力,可以在運行時添加或者配置裝飾器。
35.SQLite相關api:sqlite3_open、sqlite3_prepare_v2、sqlite3_bind_xxx、sqlite3_step、sqlite3_column_xxx、sqlite3_finalize、sqlite3_close。
36.類目(Catagory)(1)使用類目,可以在不子類化的情況下,給一個類添加功能。(2)當類目中的方法名和類中的方法名沖突時,類目的方法會比類以及子類中方法的優先級高。(3)如果不提供類名,則類目中定義的方法被視為必須實現的API,如果缺少實現代碼,則編譯器會報警。
37.將NSLog的內容重定向至文件:freopen([logFilePath cStringUsingEncoding:NSASCCIIEncoding], "a+", stderr);
38.extern關鍵字使用(1)首先申明一個變量,比如:NSArray *resArray; 然后extern NSArray *resArray;? ? ?這樣,在項目里面的任何類里面,都可以訪問resArray這個變量。? ? ?此方法可以在一些需要共享數據的場合使用。(2)extern "C",表示編譯生成的內部符號使用c約定,大多出現在交叉C編譯環境中。? ? __cplusplus只在c++中有定義。
39.從iOS4.0開始,iOS類庫增加了對正則表達式的支持,類名為NSRegularExpression。
40.從iOS5.0開始,iOS類庫增加了對JSON的支持,類名為NSJsonSerialization。
41.在編譯環境中添加"NSZombieEnabled"變量,并且置為YES,可以捕獲EXE_BAD_ACCESS錯誤,能讓錯誤提示的更精細。但是添加了此變量之后,即使對象的引用計數為0,內存也不會被回收,應用程序的內存使用會一直增加。所以在編譯完成之后,要把這個變量刪掉。
42.自定義TableViewCell的背景顏色和選擇后的顏色:將TableViewCell的backgroundView和SelectBackGroundView修改成指定的View。
43.tableView:willDisplayCell:forRowAtIndexPath方法:這個方法在TableView要使用cell去繪制row之前調用,這個方法給代理機會去設置基于狀態的屬性,并且早于TableView,比如選擇狀態的顏色或者背景的顏色等。
44.修改UIAlterView默認的Frame高度,使用委托:-(void)willPresentAlertView:(UIAlertView*)alertView {? ? alertView.frame =CGRectMake(5.f,1.f,100.f,200.f);}
45.由于TableView的cell重用機制,導致多個圖片下載事件的回調會指向同一個cell。解決辦法:在圖像下載事件中記錄當前cell的row,同時將cell的tag設置為row,當圖片下載完畢時,先判斷下載事件中記錄的row和cell的tag是不是一致,如果一致,則顯示圖片到cell上,如果不一致,則不顯示圖像。
46.UIScrollView可以放大縮小顯示的內容,它有一個參數用來控制縮放的幅度,zoomScale,默認是1.0。
47.讓UIScrollView支持捏合動作:(1)實現代理方法:viewForZoomingInScrollView,返回當前需要伸縮的視圖對象,比如UIImageView。當兩個手指捏合時,視圖對象的size的值將會被改變。(2)設置scrollView的最大和最小伸縮倍數,maximumZoomScale、minimumZoomScale。(3)重寫scrollView的layoutSubviews方法,在此方法中,可以根據需要重置視圖對象的x和y值,后者根據視圖的size屬性,重置scrollView的contentSize。
48.ios自定義鍵盤:UITextField有兩個屬性:inputView,inputAccessoryView。(1)inputView含義:輸入界面。當你想要某輸入框的輸入鍵盤使用自定義的鍵盤的話,可以自己創建一個鍵盤,然后把鍵盤視圖賦值給這個屬性。當點擊此輸入框時,彈出的鍵盤就是我們自己的鍵盤了。(2)inputAccessoryView含義:輔助輸入界面,一般放在鍵盤的上方??梢栽黾宇愃朴?#34;上一項"、"下一項"、"完成"等功能。
總結
- 上一篇: [运维]---linux机器一般监控用到
- 下一篇: [数据库]---mysql数据库 使