iOS開發過程中的各種坑

項目開發過程中不可避免的會遇到各種坑,本系列博客的主要目的是將其解決方法各個記錄下來,以後再遇到就手到擒來了。

 

1,防止多個按鈕同時按下

 

  1. [btn setExclusiveTouch:YES];  

 

增加這個語句,防止其他touch事件的分發,當一個按鈕響應了touch事件之後,其他按鈕就不可點擊了。

 

2,Push到ViewController後的scrollView子View錯位

同一個ViewController,用Modal和Push不同的方法顯示後,發現某scrollView裏面的子View在垂直方向上位置不對。後來查找發現用:

  1. self.automaticallyAdjustsScrollViewInsets = NO;  

 

可以解決問題,這個property默認值是YES。蘋果的本意是,使用Push顯示之後,由於navigation controller有個navigation bar,如果你的view(適用於tableview controller)還是從y=0開始的話會有一部分被遮蓋。但是SDK用了個一刀切的解決辦法,就是把所有的scrollview的inset設置了一下使得其所有子view都向下移動了64點,包括我們項目中用到的scrollview(這個還是水平方向的,非常無辜)。

 

3,一些不能修改大小的控件

 

一天就遇到兩個:UIPickerView和UISwitch。對於UIPickerView,只能修改寬度,高度只有162,180,216三個固定值,iOS會根據你設置的高度選一個最接近的來顯示。不過還是有方法來限制高度:方法一是將它作爲另外一個view的subview,限制這個view的高度並且設置clip屬性來截斷UIPickerView的多餘顯示區域。方法二是使用iOS的變換函數修改其高度。
UISwitch直接限制了高度和寬度,不過修改它的形狀的需求並不多,直接使用即可。

 

 

4,UITextField輸入過長後字符不自動左移

正常來說,當UITextField不限制字數而用戶輸入很長的時候,最前邊輸入的字符會自動左移,光標會一直停留在最後的位置。但是,如果UITextField的高度比字體高度小的話,會出現一直輸入但是字符不左移的問題。解決方法是放大UITextField的高度或者調小字體。

 

5,UITextField不能設置inset的問題

有時候需要設置UITextField的字與邊框的問題,但是這個控件沒有inset的屬性。這時候可以取巧的設置其leftView爲制定大小的空白view來達到這樣的效果,注意要同時設置leftViewMode爲always,這樣的話這個view纔會一直顯示。

 

6,iOS7之後設置UITableView的cell的選中顏色

蘋果原來提供的API你會發現設置了之後毫無效果,需要使用:

 

    1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    2. {   
    3.     ....  
    4.     UIView *bgColorView = [[UIView alloc] init];  
    5.     bgColorView.backgroundColor = [UIColor colorWithRed:(76.0/255.0) green:(161.0/255.0) blue:(255.0/255.0) alpha:1.0]; // perfect color suggested by @mohamadHafez  
    6.     bgColorView.layer.masksToBounds = YES;  
    7.     cell.selectedBackgroundView = bgColorView;  
    8.     ....  
    9.     return cell;  
    10. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章