CAGradientLayer
CAGradientLayer類是用於在其背景色上繪制一個顏色漸變,以填充層的整個形狀,包括圓角。這個類繼承自CALayer類,使用起來還是很方便的。
與Quartz 2D中的漸變處理類似,一個漸變有一個起始位置(startPoint)和一個結束位置(endPoint),在這兩個位置之間,我們可以指定一組顏色值(colors,元素是CGColorRef對象),可以是兩個,也可以是多個,每個顏色值會對應一個位置(locations)。另外,漸變還分為軸向漸變和徑向漸變。
我們寫個實例來看看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的處理
換了台新電腦,裝了個Xcode 6.3,整了個新證書和profile,然後打開Xcode,連上手機。額,然後發現設備居然被標識為Ineligible Devices,沒認出來。情況類似於下圖:
電腦是受信任的,證書和profile也都是OK的。試了幾次重啟Xcode和重新連接手機,無效。設備就是選不了。最後是在Product->Destination裡面才選中這個設備的。不過在工具欄還是不能選擇,郁悶,求解。
網友評論:這個我把iOS SDK換成iOS 7後就可以選了,然後就沒管了,莫名其妙又在iOS 8 SDK下可以了....
iOS 7後隱藏UITextField的光標
新項目只支持iOS 7後,很多事情變得簡單多了,就像隱藏UITextField的光標一樣,就簡單的一句話:
textFiled.tintColor = [UIColor clearColor];
通常我們用UIPickerView作為我們的UITextField的inputView時,我們是需要隱藏光標的。當然,如果想換個光標顏色,也是這麼處理。
這麼處理的有個遺留問題是:通常我們使用UIPickerView作為UITextField的inputView時, 並不希望去執行各種菜單操作(全選、復制、粘帖),但只是去設置UITextField的tintColor時,我們仍然可以執行這邊操作,所以需要加額外的處理。這個問題,我們可以這樣處理:在textFieldShouldBeginEditing:中,我們把UITextField的userInteractionEnabled設置為NO,然後在textFieldShouldEndEditing:,將將這個值設置回來。如下:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { textField.userInteractionEnabled = NO; return YES; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { textField.userInteractionEnabled = YES; return YES; }
這樣就OK了。當然這只是我們當前使用的一種處理方式,還有其它的方法,直接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之後,蘋果不讓我們這麼干了。我們去取UIAlertView的subviews時,獲得的只是一個空數組,我們沒有辦法獲取到我們想要的label。怎麼辦?三條路:告訴產品經理和UED說這個實現不了(當然,這個是會被鄙視的,人家會說你能力差);自己寫;找第三方開源代碼。嘿嘿,不過由於最近時間緊,所以我決定跟他們說實現不了,哈哈。不過在github上找了一個開源的,Custom iOS AlertView,star的數量也不少,看來不錯,回頭好好研究研究。