[iOS] iOS开发埋坑之路(一)
2015-09-01 15:16
357 查看
项目开发过程中不可避免的会遇到各种坑,本系列博客的主要目的是将其解决方法各个记录下来,以后再遇到就手到擒来了。
1,防止多个按钮同时按下
增加这个语句,防止其他touch事件的分发,当一个按钮响应了touch事件之后,其他按钮就不可点击了。
2,Push到ViewController后的scrollView子View错位
同一个ViewController,用Modal和Push不同的方法显示后,发现某scrollView里面的子View在垂直方向上位置不对。后来查找发现用:
可以解决问题,这个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,防止多个按钮同时按下
[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; }
相关文章推荐
- 【IOS开发】实时显示摄像头内容
- TUTK p2p视频流H.264 iOS平台解码成功
- ios与js 交互
- ios开发职工常常遇到的问题
- IOS initWithNibName 和 loadNibNamed的区别
- IOS获取文件路径的方法
- iOS开发支付宝支付,如何判断手机上面是否有安装支付宝软件
- iOS之 coredata
- ios如何让自己的应用程序支持系统自带的分享
- iOS 字体加粗
- iOS提交遇到的新问题
- iOS 笔记(1)
- IOS 下字体 PC 上
- Mac下使用CornerstoneSVN版本管理中iOS静态库被忽略问题解决
- iOS电脑安装Pods
- iOS学习总结之导航控制器
- ios tableviewcell 设置为禁止点击
- iOS中scrollview是否要回弹
- iOS 让自己代码更好看的一些小技巧
- ios textView 输入时,输入框里面的文字上下浮动Bug