iOS 开发中遇到的问题

2016-09-29  本文已影响71人  一只特立独行的道哥

1. 自定义导航条的标题(文字大小和颜色)

直接上代码

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];
    titleLabel.textColor = [UIColor blackColor];
    titleLabel.font = [UIFont systemFontOfSize:17];
    titleLabel.textAlignment = NSTextAlignmentCenter;
    
    titleLabel.text=@"登录";
    self.navigationItem.titleView = titleLabel;

2. 设置textField的左边图片

直接上代码

    self.textFiled.leftView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_login_shouji"]];
    self.textFiled.leftViewMode = UITextFieldViewModeAlways;

3. 设置textfield的placeholder颜色

直接上代码

self.textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.loginInputId.placeholder attributes:@{NSForegroundColorAttributeName: color}];

4. 判断输入法是否是中文

怒上代码 中文是zh-cn,应为是en-us,其他地区见
地区代码

 BOOL isChinese = [[[UIApplication sharedApplication] textInputMode].primaryLanguage isEqualToString:@"zh-cn"];

5. fullResolutionImage 与fullScreenImage

参考自使用ALAssetsLibrary读取所有照片
ALAssetRepresentation的 metadata 方法很慢,我在iPhone4 iOS5.1.1中测试,此方法返回需要40-50ms,所以获取图片的个各种属性尽量直接从ALAssetRepresentation中获取,不要读取metadata,调用多次也确实很容易会memory warning,

系统”相册”程序显示的图片是 fullScreenImage ,而不是 fullResolutionImage ,fullResolutionImage尺寸太大,在手机端显示推荐用fullScreenImage。
fullScreenImage已被调整过方向,可直接使用,即

[UIImage imageWithCGImage:representation.fullScreenImage];

使用fullResolutionImage要自己调整方法和scale,即

[UIImage imageWithCGImage:representation.fullResolutionImage scale:representation.scale orientation:representation.orientation];

6. 解决cell分割线左边短20px的问题

- (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];
      }
    
}

如果单独设置willDisplayCell中的是不起作用的,还需要在viewDidLoad方法中添加如下代码

    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }
    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }

7.viewForHeaderInSection 的section从1开始而不是从0开始

(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 方法中的section貌似从1开始而不是从0

程序中虽然设置了 self.tableView.sectionHeaderHeight =20
还还是是不行 viewForHeaderInSection 中的section始终还是从1开始。
于是我发现, 如果你使用方法:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{
    return 40;
}

就从0开始啦。

8. UILabel的行间距

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    
    [paragraphStyle setLineSpacing:5];//调整行间距
    
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
    
    tipL.attributedText = attributedString;
    
上一篇 下一篇

猜你喜欢

热点阅读