1. 在button中加入圖片并設(shè)置文字,默認(rèn)圖片在左邊皂股,文字在右邊。(故事板)
2. cocoapods 出現(xiàn)invalid+byte+sequence+in+UTF-8 這種錯誤:
將podfile中的注釋中文刪除。
3. 高德地圖使用2.4.0(含)之后版本的SDK愈魏,需在info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段,以申請相應(yīng)的權(quán)限想际。
4. autolayout 動畫:這個約束加到哪個view上培漏,就由這個[view layoutIfNeeded];
不能用子view來 layoutIfNeeded。 不然沒效果胡本。
往控件上手動添加約束牌柄,不會立刻改變它的frame,則可用[self.viewlayoutIfNeeded]; 立刻改變它的frame侧甫。
5. 如何從xib加載控制器:
news2ViewController*viewcontroller = [[news2ViewControlleralloc]initWithNibName:@"news2ViewController"bundle:nil];
6.關(guān)于初始化NSDictionary的坑:字典里面的value可能為nil會報(bào)錯--[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to inser nil object from objects[0]珊佣。
解決辦法NSDictionary初始化的坑 - 推酷。
//value:key這種標(biāo)準(zhǔn)化的字典生成方式不會出錯披粟!
NSDictionary*attribute = [NSDictionary dictionaryWithObjectsAndKeys:self.article.font,NSFontAttributeName,nil];
7. //切記改變了約束以后要立馬下一句咒锻,這樣會刷新約束,否則原來的frame不會改變
[self.articlelayoutIfNeeded];
8. scrollview的豎直范圍是指:子視圖離scrollview的bottom的距離守屉,所以設(shè)定30即可惑艇,不用在程序中做隨時更改。
9. this class is not key value coding-compliant for the key send.'
xib連線出錯胸梆。
10. textView 換行符:\r\n
11. Impossible to set up layout with view hierarchy unprepared for constraint.這個錯誤是由于view1與view2同為scrollview里面的子視圖敦捧,想用約束建立他們之間的關(guān)系,然而碰镜,view1是在SB中往scrollview中添加的兢卵,在SB上面給scrollview添加的子視圖卻沒有加入到scrollview的視圖層次關(guān)系中所以才會報(bào)沒有添加層次關(guān)系的錯。
改正方法绪颖,在viewDidload方法中把這句話[self.scrollview addsubview:view1];放在添加view2之間秽荤。
12. 如果viewController或視圖A從xib加載甜奄,那么在它的viewDidLoad方法中不能[NSBundle mainBundle] load... 它自己了。
viewDidLoad方法是在 先加載了xib中所有的視圖(即創(chuàng)建他們并構(gòu)建層級關(guān)系)窃款,然后才調(diào)用viewDidLoad方法课兄。
13. 約束是有identifier可以唯一識別的。這樣就不用拖線了晨继。烟阐。。
14. 關(guān)于initWithCoder方法只會初始化自己紊扬,此時故事板上的子視圖也沒有被初始化蜒茄,self與原來的子視圖更沒有建立起層級關(guān)系,因此只能往self上添加子視圖餐屎,并建立self和新子視圖的層次關(guān)系檀葛。
awakeFromNib相當(dāng)于viewDidLoad,所有層級關(guān)系已經(jīng)建立腹缩。
updateConstraints方法一定要調(diào)用super屿聋。。藏鹊。润讥。
如果使用純代碼寫,則init方法里面可以設(shè)置self子視圖與子視圖之間的層次關(guān)系(即上述規(guī)則不成立)盘寡。
注:用init生成view 不會執(zhí)行awakeFromNib象对。
15. 給xib文件添加手勢,會出現(xiàn)手勢不響應(yīng)的情況宴抚。原因是:xib的加載方法loadNibName 中owner要設(shè)為self勒魔。
16. 發(fā)通知的優(yōu)點(diǎn):不受view的層級限制。
17. terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "shipinView" nib but the view outlet was not set
出現(xiàn)這種錯誤的原因是:
我在創(chuàng)建shipinViewController的時候菇曲,控制器加載view冠绢,會先去shipinView.xib找,然而我真的有個文件叫shipinView.xib常潮,而這個xib不是我想要的控制器的view弟胀,xcode以為他是,所以就報(bào) nib but the view outlet was not set的錯誤喊式。沒有把控制器的view和xib的view關(guān)聯(lián)起來孵户。
所以,給view命名xib時候岔留,不要帶view夏哭。
18. 屏幕旋轉(zhuǎn):
本控制器及其子控制器能不能旋轉(zhuǎn)
- (BOOL)shouldAutorotate{
returnYES;
}
本控制器及其子控制的旋轉(zhuǎn)方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
return(UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight);
}
屏幕旋轉(zhuǎn)是:如果在info.plist文件中設(shè)置了幾個方向,那么控制器只能在那幾個方向旋轉(zhuǎn)或者不旋轉(zhuǎn)献联;但是沒有開通的方向是一定不能在VC中用代碼開通的竖配。
19. 使用block會出由于層次過于復(fù)雜何址,導(dǎo)致不能拿到對應(yīng)的VC。
解決辦法:1. 用通知 2. 在創(chuàng)建下一層級的view時进胯,view創(chuàng)建一個屬性用爪,這個屬性用來指示上層級的VC。這樣VC就保留倒了下一個層級胁镐。
20. navigationItem 中的UIBarButtonItem的image 要取消渲染才能顯示偎血。
點(diǎn)擊圖片,右邊設(shè)置有render As 盯漂,選擇 original image烁巫。
21. pickerView的reloadComponent刷新不了。原因是自己把代碼寫錯了:
我寫成了self.pickerView = picker; 由于picker是全局指針宠能,應(yīng)該寫成:picker = self.pickerView;由于全局變量指針沒有指向pickerView磁餐,所以導(dǎo)致违崇,pickerView調(diào)用reloadComponent方法,不能刷新頁面诊霹。
另外:reload這個方法羞延,會優(yōu)先調(diào)用ViewForRow,其次才是titleForRow脾还。這兩個方法只調(diào)用一個伴箩。
21. 只有在viewDidAppear這個方法里面,self.view的frame才是正確的鄙漏。
22. 由于在viewWillAppear中沒寫super viewWillAppear 導(dǎo)致嗤谚,這里面的方法調(diào)用失敗。同理viewDidAppear也要調(diào)用super的方法怔蚌。
23. 由于沒有創(chuàng)建model巩步,只是self.model來接數(shù)據(jù)是不對的。我們用慣了故事板連線形成的屬性桦踊,不用alloc是因?yàn)樵诠适掳逯幸呀?jīng)存在了椅野。而model是NSObject,我們要先創(chuàng)建它籍胯,指針才有意義竟闪。否則為nil。
24. 解決scrollView上的按鈕點(diǎn)擊響應(yīng)延遲的問題:
scrollview上添加button杖狼,會使得button響應(yīng)延遲炼蛤。解決辦法:
self.scrollView.delaysContentTouches = NO;
25. 關(guān)于字典
下面2個方法只能由NSMutableDictionary 應(yīng)用。
1. setValue:forKey:只接受NSString*類型的key
2. setValue:forKey:當(dāng)value為nil時蝶涩,將調(diào)用removeObjectForKey:
26. 如何設(shè)置顏色的RGB
[UIColor colorWithRed:(CGFloat)154/255 green:(CGFloat)205/255 blue:(CGFloat)50/255 alpha:0.8];
154/255 RGB值要除以255鲸湃,并且是CGFloat型赠涮。
27. 描述文件路徑
~/Library/MobileDevice/Provisioning Profiles
28. SB中的use standard value 和use Canvas Value
前者指默認(rèn)距離。
后者指當(dāng)前兩條邊的實(shí)際距離暗挑。