漲姿勢!iOS零碎知識(shí)小集
CAGradientLayer
CAGradientLayer類是用于在其背景色上繪制一個(gè)顏色漸變,以填充層的整個(gè)形狀,包括圓角。這個(gè)類繼承自CALayer類,使用起來還是很方便的。
與Quartz 2D中的漸變處理類似,一個(gè)漸變有一個(gè)起始位置(startPoint)和一個(gè)結(jié)束位置(endPoint),在這兩個(gè)位置之間,我們可以指定一組顏色值(colors,元素是CGColorRef對象),可以是兩個(gè),也可以是多個(gè),每個(gè)顏色值會(huì)對應(yīng)一個(gè)位置(locations)。另外,漸變還分為軸向漸變和徑向漸變。
我們寫個(gè)實(shí)例來看看CAGradientLayer的具體使用:
- CAGradientLayer *layer = [CAGradientLayer layer];
- layer.startPoint = (CGPoint){0.5f, 0.0f};
- layer.endPoint = (CGPoint){0.5f, 1.0f};
- layer.colors = [NSArray arrayWithObjects:(id)[UIColor blueColor].CGColor, (id)[UIColor redColor].CGColor, (id)[UIColor greenColor].CGColor, nil];
- layer.locations = @[@0.0f, @0.6f, @1.0f];
- layer.frame = self.view.layer.bounds;
- [self.view.layer insertSublayer:layer atIndex:0];
參考
CAGradientLayer Class Reference
Xcode中Ineligible Devices的處理
換了臺(tái)新電腦,裝了個(gè)Xcode 6.3,整了個(gè)新證書和profile,然后打開Xcode,連上手機(jī)。額,然后發(fā)現(xiàn)設(shè)備居然被標(biāo)識(shí)為Ineligible Devices,沒認(rèn)出來。情況類似于下圖:
電腦是受信任的,證書和profile也都是OK的。試了幾次重啟Xcode和重新連接手機(jī),無效。設(shè)備就是選不了。***是在Product->Destination里面才選中這個(gè)設(shè)備的。不過在工具欄還是不能選擇,郁悶,求解。
網(wǎng)友評論:這個(gè)我把iOS SDK換成iOS 7后就可以選了,然后就沒管了,莫名其妙又在iOS 8 SDK下可以了....
iOS 7后隱藏UITextField的光標(biāo)
新項(xiàng)目只支持iOS 7后,很多事情變得簡單多了,就像隱藏UITextField的光標(biāo)一樣,就簡單的一句話:
- textFiled.tintColor = [UIColor clearColor];
通常我們用UIPickerView作為我們的UITextField的inputView時(shí),我們是需要隱藏光標(biāo)的。當(dāng)然,如果想換個(gè)光標(biāo)顏色,也是這么處理。
這么處理的有個(gè)遺留問題是:通常我們使用UIPickerView作為UITextField的inputView時(shí), 并不希望去執(zhí)行各種菜單操作(全選、復(fù)制、粘帖),但只是去設(shè)置UITextField的tintColor時(shí),我們?nèi)匀豢梢詧?zhí)行這邊操作,所以需要加額外的處理。這個(gè)問題,我們可以這樣處理:在textFieldShouldBeginEditing:中,我們把UITextField的userInteractionEnabled設(shè)置為NO,然后在textFieldShouldEndEditing:,將將這個(gè)值設(shè)置回來。如下:
- - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
- textField.userInteractionEnabled = NO;
- return YES;
- }
- - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
- textField.userInteractionEnabled = YES;
- return YES;
- }
這樣就OK了。當(dāng)然這只是我們當(dāng)前使用的一種處理方式,還有其它的方法,直接google或者stackoverflow吧。
iOS 7后UIAlertView中文字左對齊問題
在iOS 7之前,如果我們想要讓UIAlertView中的文字居左顯示的話,可以使用以下這段代碼來處理:
- for (UIView *view in alert.subviews) {
- if([[view class] isSubclassOfClass:[UILabel class]]) {
- ((UILabel*)view).textAlignment = NSTextAlignmentLeft;
- }
- }
但很遺憾的是,在iOS 7之后,蘋果不讓我們這么干了。我們?nèi)トIAlertView的subviews時(shí),獲得的只是一個(gè)空數(shù)組,我們沒有辦法獲取到我們想要的label。怎么辦?三條路:告訴產(chǎn)品經(jīng)理和UED說這個(gè)實(shí)現(xiàn)不了(當(dāng)然,這個(gè)是會(huì)被鄙視的,人家會(huì)說你能力差);自己寫;找第三方開源代碼。嘿嘿,不過由于最近時(shí)間緊,所以我決定跟他們說實(shí)現(xiàn)不了,哈哈。不過在github上找了一個(gè)開源的,Custom iOS AlertView,star的數(shù)量也不少,看來不錯(cuò),回頭好好研究研究。