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. }  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值