// 當XIB 中的文件加載完成會調(diào)用此方法
xib? 存儲在硬盤中聪黎。 當你沒有使用的時候它是不會加載到內(nèi)存的。當你調(diào)用的時候加載到內(nèi)存
-awakeFromNib
{
}
-(void)viewDidLoad
此方法在ViewController 實例中的view 被加載完畢后調(diào)用挽铁,如需要重定義某些要?在view 加載完畢后立刻執(zhí)行的動作或者界面修改双戳,則應(yīng)該把代碼寫在此函數(shù)中益楼。
// app啟動完畢時調(diào)用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
知識點:
strong? ? ? ? ? ? ? ? ? ? ? ? 數(shù)組? ? ? OC 對象?
weak? ? ? ? ? ? ? ? ? ? ? ? ? UI控件? ? 代理對象
assign? ? ? ? ? ? ? ? ? ? ? ? 基本數(shù)據(jù)類型? ? 數(shù)值類型? bool? ? 結(jié)構(gòu)體
copy? ? ? ? ? ? ? ? ? ? ? ? ? 字符串NSString
知識點:查看文件路徑? 方法一:NSLog(@“ %@“,NSHomeDirectory());
方法二: 打個斷點po NSHomeDirectory () 查看資源路徑知識點:ViewController 的生命周期(Life Circle)loadView -> viewDidLoad ->viewWillAppear -> viewDidAppear ->viewWillDisappear ->viewDidDisappear -> dealloc loadView:一般情況下不用用到氧秘,除非需要重寫設(shè)置View;viewDidLoad/dealloc:視圖加載完成之后的設(shè)置和視圖銷毀的時候調(diào)用省撑;viewWillAppear/viewWillDisappear:視圖即將呈現(xiàn)和視圖即將消失赌蔑;viewDidAppear/viewDidDisappear:視圖展現(xiàn)在屏幕的時候和視圖完全消失在屏幕的時候調(diào)用,默認不做任何操作竟秫;如果
知識點: Xcode 7 中多了一個LaunchScreen,storyboard. 用來設(shè)置啟動界面,如果沒有啟動頁面,默認她的屏幕的大小是4s的大小知識點:
1.? {? int _age }_age? 成員變量以下劃線開頭的好處娃惯,就是可以用于區(qū)分局部變量和成員變量。2.? 屬性變量里面有一個實例變量? _myButton@property (nonatomic, strong) UIButton *myButton;成員變量: _size? 成員變量以下劃線開頭的好處肥败,就是可以用于區(qū)分局部變量和成員變量石景。@interface MyViewController :UIViewControlle{UIButton *yourButton;int _count;id data;}成員變量用于類內(nèi)部拙吉,無需與外界接觸的變量。成員變量默認是protected揪荣,一般情況下筷黔,非子類對象無法訪問因為成員變量不會生成set、get方法仗颈,所以外界無法與成員變量接觸成員變量是定義在{}號中的變量佛舱,如果變量的數(shù)據(jù)類型是一個類則稱這個變量為實例變量。因為實例變量是成員變量的一種特殊情況挨决,所以實例變量也是類內(nèi)部使用的请祖,無需與外部接觸的變量,這個也就是所謂的類私有變量脖祈。局部變量:-(void)viewDidLoad{// 局部變量NSArray *array = [[NSArray alloc] initWithObject:@“123”,nil];}局部變量是根據(jù)其生存周期定義的肆捕,在源文件中的array,其生命周期是在以“{ }”為界限的代碼塊中盖高,雖然它的名稱與成員變量相同慎陵,但不是同一個變量眼虱。屬性變量:@interface MyViewController :UIViewControlle@property (nonatomic, strong) UIButton *myButton;@end因為編譯器會自動為你生成以下劃線開頭的實例變量_myButton,不需要自己手動再去寫實例變量席纽。而且也不需要在.m文件中寫@synthesize myButton捏悬,也會自動為你生成setter,getter方法润梯。屬性變量是用于與其他對象交互的變量过牙。屬性變量的好處就是允許讓其他對象訪問到該變量(因為屬性創(chuàng)建過程中自動產(chǎn)生了set 和get方法)。當然纺铭,你可以設(shè)置只讀或者可寫等寇钉,設(shè)置方法也可自定義。現(xiàn)在大家似乎都不怎么喜歡用成員變量來定義類的變量彤蔽,都喜歡用屬性變量來定義類的變量摧莽。把需要與外部接觸的變量定義在.h文件中,只在本類中使用的變量定義在.m文件中顿痪。實例變量:實例變量本質(zhì)上就是成員變量镊辕,只是實例是針對類而言,編譯器會自動為你生成以下劃線開頭的實例變量? _myButton蚁袭,也會自動為你生成setter征懈,getter方法。如果.m文件中寫了@synthesize myButton揩悄,那么生成的實例變量就是myButton卖哎;如果沒寫@synthesize myButton,那么生成的實例變量就是_myButton删性。全局變量:? 定義:在@implementation外定義的變量(在@implementation中定義也是可以但是一般不這么干)舉例://規(guī)范的 static int hu=3;//全局變量NSString*sttr1=@"S1ViewController";//全局變量@implementation S1ViewController@end?
知識點:Nib? nib是3.0版本以前的產(chǎn)物亏娜,在終端下我們可以看到,NIB其實是一個文件夾蹬挺,里面有可執(zhí)行的二進制文件维贺;Xib? xib是一個基于xml ( 可擴展標記語言 ) 的描述文件,可以實現(xiàn)可視化編程巴帮。無論nib也好溯泣,xib也好,最終在執(zhí)行UIViewController生命周期函數(shù)loadView之前榕茧,都會轉(zhuǎn)化成可執(zhí)行的nib文件垃沦。// static? 是只有這個文件可以訪問。 const? 防止其他文件去改static NSString *const MIOCellId = @"cell";Storyboard:storyboard是多個xib文件集合的描述文件用押,也采用xml格式肢簿。那么storyboard與xib比較,區(qū)別在于:一個工程中可以有多個xib文件,一個xib文件對應(yīng)著一個視圖控制器和多個視圖译仗。而使用storyboard時抬虽,一個工程只需要一個主storyboard文件就可以了。因此纵菌,在包含多個視圖控制器的情況下阐污,采用storyboard管理比較方便,而且storyboard還可以描述界面之間的導航關(guān)系咱圆。加載過程:當app 啟動時笛辟,UIApplicaiton 會自動加載main.storyboard 文件。 同時序苏,會自動加載 main.storyboard? 上的第一個視圖控制器 (view controller)手幢,并且,將該 view controller 所對應(yīng)的 View 加載到UIWindow 對象中忱详。 #import#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
這行代碼的作用是围来,將app delegate class 傳給 UIApplicationMain。? 因為整個App 啟動和運行的入口匈睁,就在UIApplicationMain中监透。
需求:常見知識點
1.方法名字 帶有冒號的 都是有參數(shù)的
2.[self setNeedsDisplay];? 會自動調(diào)用drawRect 方法
3.[self setNeedsLayout]會默認調(diào)用layoutSubView 就可以處理子視圖中的一些數(shù)據(jù)了
4.因為UITextView 繼承自 ScrollView 系統(tǒng)會自動設(shè)置64 的頂部間距
5.作為UIView 沒有 image 屬性 和 backgroudImage 屬性 只能將整張圖片畫到UIView 上面去
6.load 是只要類所在的文件被調(diào)用,而initialize是在類或者其子類的第一個方法被調(diào)用之前調(diào)用航唆。相同點是:方法只會被調(diào)用一次胀蛮。
7. _deal = deal;復制給本頁面的屬性, 在本頁面別的方法里就能調(diào)用這個值
8.[self viewDidLoad]; 在view創(chuàng)建完畢后糯钙,最終都會調(diào)用viewDidLoad粪狼。一般我們會在這里做一些界面的初始化操作,比如往view中添加一些子視圖任岸,從數(shù)據(jù)庫或者網(wǎng)絡(luò)加載模型數(shù)據(jù)裝備到子視圖中再榄。
9.當一個控件沒有尺寸, 但是設(shè)置了子控件是可以顯示出的享潜,但是卻不能點擊交互不跟。
10. (int)(page+0.5) 四舍五入的運算
需求:? 一進來就彈出鍵盤
[textView becomeFirstResponder];
需求:取消第一響應(yīng)者? (退出鍵盤)
[searchBar resignFirstResponder];
需求:? 退下鍵盤
[self.view? endEditing:YES];
需求:? 換單詞
com+F? ? 比如? button 換成 MIOLeftMenuButton? 之后點擊all? 然后點 done? 搞定
需求:切換控制器
modal 出來的控制器 用dismiss 銷毀
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:publish animated:NO completion:nil];
push 出來的控制器 用pop 銷毀? 切換是可逆的。
[self.navigationController popViewControllerAnimated:YES];
3. 切換 window 的rootViewController? 新特性? 【前兩種都是銷毀會存在內(nèi)存中米碰,window 會銷毀】
需求:設(shè)置啟動圖片延長
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[NSThread sleepForTimeInterval:0.2];// 這一句代碼延長啟動時長
return YES;
}
需求:計算總頁數(shù)
// 總頁數(shù) == (總個數(shù) + 每頁的最大數(shù) - 1) / 每頁最大數(shù)
NSUInteger rows = (sqaures.count + maxCols - 1) / maxCols;
需求:查看服務(wù)器返回的數(shù)據(jù)
//發(fā)送請求給服務(wù)器
//查看服務(wù)器返回的數(shù)據(jù)
MIOLog(@"%@",responseObject);
//獲取帖子數(shù)據(jù)? 轉(zhuǎn)化成plist 文件
[responseObject writeToFile:@"/Users/linjieai2008qqcom/Desktop/tiezi.plist" atomically:YES];
需求:三種優(yōu)先級
window_.windowLevel =UIWindowLevelAlert;最高? 2
window_.windowLevel =UIWindowLevelStatusBar; 中等 1
window_.windowLevel =UIWindowLevelNormal; 最低 0
需求:獲取應(yīng)用程序窗口的根控制器
[UIApplication sharedApplication].keyWindow.rootViewController
需求:返回控制器的方向
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
需求:不需要跟隨父控件的尺寸變化而伸縮
self.autoresizingMask = UIViewAutoresizingNone
需求:永遠可以上拉下拽控件
self.collectionview.alwaysBounceVertical = YES;
需求:查找沙盒路徑
打印NSLog(@“%@”file); 就可以找到sqlite 沙盒路徑? 就能查看 團購收藏的內(nèi)容
需求:換單詞
com+F? ? 比如? button 換成 MIOLeftMenuButton? 之后點擊all? 然后點 done? 搞定
需求 :側(cè)滑動畫功能的實現(xiàn)
[UIView animateWithDuration:2.0 animations:^{
self.navigationController.view.transform = CGAffineTransformMakeTranslation(200, 0);
}];
需求:配置PCH? :
1.創(chuàng)建pch
2.在building settings 中 設(shè)置 Apple LLVM 7.1 language
3.Precompile Prefix Header 設(shè)置為YES 下一行
Prefix Heaser 設(shè)置內(nèi)容為: $(SRCROOT)/網(wǎng)易新聞/pchFile.pch
需求:默認第一個為選中按鈕
/** 選中按鈕? */
@property (nonatomic, weak) UIButton*? selectedButton? ;
//監(jiān)聽按鈕點擊
-(void)buttonClick:(UIButton* )button
{
self.selectedButton.selected = NO;
button.selected = YES;
self.selectedButton = button;
}
UIButton *newsButton =[self setupBtnWithIcon:@"sidebar_nav_news" title:@"新聞" bgColor:MIOColorRGBA(202, 68, 73, alpha)];
[self buttonClick:newsButton];
需求:調(diào)節(jié)狀態(tài)欄字體亮度為白色
//設(shè)置狀態(tài)欄字體為亮色
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
問題: 如果還無法正常現(xiàn)實? 就是優(yōu)先級不夠? 购城,如果還不行設(shè)置plist 文件
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[UIApplication? sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
狀態(tài)欄的樣式
- (UIStatusBarStyle)preferredStatusBarStyle;
? 狀態(tài)欄的可見性
- (BOOL)prefersStatusBarHidden;
n 通過[UIApplication sharedApplication]可以獲得這個單例對象
n
需求:子類繼承父類重寫時候? 有返回值和沒返回值的情況
1. 沒有返回值
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
2.有返回值
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
需求:驗證對象是否被銷毀了
-(void)dealloc
{
NSLog(@“ %s ”,__func__);
}
需求:設(shè)置隨機背景色
self.view.backgroundColor =[UIColor colorWithRed:arc4random_uniform(100)/100.0 green:arc4random_uniform(100)/100.0 blue:arc4random_uniform(100)/100.0 alpha:1.0];
需求:1.ios button 點擊Action連接到.h 文件的 @interface 會在 @implementatopm生成方法
2. 鏈接到.m 文件中 @interface 中 也會在@implementation 生成方法
3. 直接鏈接到.m 的@implementation? 會生成方法 吕座! 這三個有什么區(qū)別嗎
解決:1..h 文件里面的成員外部可以訪問(可以設(shè)置輸出口)
2. 會自動生成set 和 get 方法,如果選擇Action(可以設(shè)置輸出口)
3. 可以生成set? 和 get 方法瘪板, 不能設(shè)置輸出口
需求:點語法和setter 如何區(qū)分使用吴趴?
例子: [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal]
btn.contentVerticalAlignment = UIControlContentVerticalAlignment;
解決:用點語法? 實際上是調(diào)用了屬性的set 和 get方法
UIButton titleColor 是個方法不是屬性? 所以點不出來? setTitleColor? 是直接調(diào)用的方法
需求://需要轉(zhuǎn)換坐標系
CGRect newFrame =[from convertRect:from.bounds toView:window];
self.containerView.CenterX = CGRectGetMidX(newFrame);
self.containerView.y = CGRectGetMaxY(newFrame);
比如self.red = [0 ,50, 100 ,100]? self.blue = [100,150,100,100]
理解:? 以紅色視圖的坐標點為遠點的圖形 CGRectMake(50,50,50,50) 轉(zhuǎn)換成以? 變成self.blue 為坐標原點的坐標點? 的值 (150 150 ,50侮攀, 50)锣枝;
CGRect newRect =[self.red convertRect:CGRectMake(50,50,50,50) toView:self.blue];
需求:UIViewController? ? UIView? 的初始化
UIViewController 的初始化在? viewDidLoad
UIView 的自定義xib? 初始化在? awakeFromNib
需求 : 賬號密碼 判斷的時候? 不會造成重復判斷? 直接退出 不執(zhí)行后面的代碼
if(username.length == 0)
{
[self showInfo:@"賬號不能為空" message:@"提示" cancelMess:@"我知道了"];
return;
//return 就不會提醒后面的信息了厢拭。
}
需求 :打印屏幕的尺寸
NSLog(@“? %@ “,NSStringFromCGSize([ UIScreen mainScreen].bounds.size))
需求 : 不設(shè)置啟動圖片的話? 屏幕會變成 4s 的尺寸
launchScreen 其實是把控制器設(shè)置了一個截屏.? 生成了一個圖片