您的位置:首页 > 移动开发 > IOS开发

[iOS] iOS开发埋坑之路(一)

2015-09-01 15:16 357 查看
项目开发过程中不可避免的会遇到各种坑,本系列博客的主要目的是将其解决方法各个记录下来,以后再遇到就手到擒来了。

1,防止多个按钮同时按下

[btn setExclusiveTouch:YES];


增加这个语句,防止其他touch事件的分发,当一个按钮响应了touch事件之后,其他按钮就不可点击了。

2,Push到ViewController后的scrollView子View错位

同一个ViewController,用Modal和Push不同的方法显示后,发现某scrollView里面的子View在垂直方向上位置不对。后来查找发现用:

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你会发现设置了之后毫无效果,需要使用:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
....
UIView *bgColorView = [[UIView alloc] init];
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
bgColorView.layer.masksToBounds = YES;
cell.selectedBackgroundView = bgColorView;
....
return cell;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: