你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 漲姿勢!iOS零碎知識小集

漲姿勢!iOS零碎知識小集

編輯:IOS開發基礎

1.jpg

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,沒認出來。情況類似於下圖:

blob.png

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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved