1. iOS7以后带有导航栏的控制器的视图坐标是从屏幕左上角开始计算了,这和我们之前一直从导航栏以下开始计算的使用习惯有点冲突,解决的方法就是在viewDidLoad里面添加下面一行代码:
self.edgesForExtendedLayout = UIRectEdgeNone;
2. UITableView不想出现多于数据个数的cell分割线,只要在初始化tableview的时候加上下面一句代码即可:
m_tableView.tableFooterView = [[UIView alloc]init];//m_tableView是定义的成员表视图对象
3. UITextView控件,文本默认是居中显示的,如果想让它在输入的时候就顶部对齐,只需在其初始化前(最好在viewDidLoad里面)添加下面一行代码即可:
self.automaticallyAdjustsScrollViewInsets = NO;
4. 修改UITextField的placeholder占位语的颜色和字体。这里提供两种比较实用的方法,代码如下:
(1)通过富文本属性设置。
//m_phoneNumTxtfld是一个成员变量
m_phoneNumTxtfld = [[UITextField alloc]initWithFrame:CGRectMake(50, 0, kMainWidth, 42)];
m_phoneNumTxtfld.font = [UIFont systemFontOfSize:10.0];
m_phoneNumTxtfld.placeholder = @"请输入用户名/手机号";
m_phoneNumTxtfld.keyboardType = UIKeyboardTypeNumberPad;
m_phoneNumTxtfld.delegate = self;
[m_phoneNumTxtfld setValue:[UIColor redColor]forKeyPath:@"_placeholderLabel.textColor"];
[m_phoneNumTxtfld setValue:[UIFont systemFontOfSize:10.0]forKeyPath:@"_placeholderLabel.font"];
[view addSubview:m_phoneNumTxtfld];
(2)通过KVC设置。
//m_phoneNumTxtfld是一个成员变量
m_phoneNumTxtfld = [[UITextField alloc]initWithFrame:CGRectMake(50, 0, kMainWidth, 42)];
m_phoneNumTxtfld.font = [UIFont systemFontOfSize:10.0];
m_phoneNumTxtfld.keyboardType = UIKeyboardTypeNumberPad;
m_phoneNumTxtfld.delegate = self;
NSString *holderText = @"请输入用户名/手机号";
NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc]initWithString:holderText];
[placeholder addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(0, holderText.length)];
[placeholder addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:10.0]
range:NSMakeRange(0, holderText.length)];
m_phoneNumTxtfld.attributedPlaceholder = placeholder;
[view addSubview:m_phoneNumTxtfld];
注:占位语的字体大小要和文本的字体大小保持一致,否则可能会出现上下不对齐的问题。
5. UITableVIew 分隔线左对齐
iOS7之前表视图的分割线是左对齐模式,iOS7之后开始分割线距离左边有一定距离了,个人感觉这个间隔其实挺好看的,整体看着也舒服多了,但是有的产品非要设计成以往的形式,那作为开发的我们也是没有办法的,只能照做(如果你说服不了他的情况)。其实设置左对齐的方式比较多,比如自定义分割线等,这里只说一个比较简单的方法,直接用表视图的委托方法来做。代码如下。
//分割线左对齐
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){
[cell setPreservesSuperviewLayoutMargins:NO];
}
}
6. 设置UITableViewCell 打勾选择模式UITableViewCellAccessoryCheckmark的颜色
这个很简单,一句代码搞定,不多说了,直接代码说明吧
cell.tintColor = [UIColor redColor];//设置红色的打勾。