iOS零碎知識小集

jopen 9年前發布 | 10K 次閱讀 IOS iOS開發 移動開發

iOS零碎知識小集

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];

參考

  1. CAGradientLayer Class Reference

Xcode中Ineligible Devices的處理

換了臺新電腦,裝了個Xcode 6.3,整了個新證書和profile,然后打開Xcode,連上手機。額,然后發現設備居然被標識為Ineligible Devices,沒認出來。情況類似于下圖:

iOS零碎知識小集

電腦是受信任的,證書和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的數量也不少,看來不錯,回頭好好研究研究。

來源:南峰子的技術博客

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!