美文网首页iOS常见问题
iOS 小问题解决方案 - 01

iOS 小问题解决方案 - 01

作者: 浮桥小麦 | 来源:发表于2016-07-04 09:36 被阅读70次

    前言:把自己平常写项目遇到的一些问题的解决方案总结到这里,方便自己以后查看,也希望对看文章的你有一定的帮助

    查看目录
    01 解决UICollectionView点击手势与didSelected方法冲突
    02 id特性的运用
    03 标签控制器标签栏设置背景
    04 设置图片的渲染模式
    05 UITableViewCell的点击效果设置
    06 UITableView 滑动遇到的小问题
    07 运行突然出现you don’t have permission to view it错误
    08 设置UITableViewCell的分割线最简单的方法
    09 利用导航栏跳转时隐藏底部的tabBar栏
    10 直接设置导航栏中间标题的字体大小和颜色
    11 如何设置自定义字体
    12 AFNetWorking 请求数据报”Request failed: unacceptable content-type: text/plain” 错误解决方法
    
    pragma mark -- 01 解决UICollectionView点击手势与didSelected方法冲突
    • 做的小项目中遇到了给UICollectionView添加了点击手势而cell的代理方法didSelect不响应了,上网查了下解决方法
    1.首先你得遵守 UIGestureRecognizerDelegate,设置代理 _tap.delegate = self;
    2.实现代理方法
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
        if (touch.view != self.collectionView) {
            return NO;
        }
       return YES;
    }
    这个代理方法会拦截你的点击手势,先进行判断是否进行手势事件
    
    pragma mark — 02 id特性的运用
    • 先说说问题情况,就是我自定义了三个textField,都有一个暴露给外界调用的一个方法 - (void)initiaText; 然后在textField的代理方法中我想调用这个方法而又不去写具体的自定义类名
    //三个自定义的UITextField
     _flagField.delegate = self;
     _birthdayField.delegate = self;
     _cityField.delegate = self;
    
    //代理方法:(笨写法)
    - (void)textFieldDidBeginEditing:(FlagField *)textField
    {
      [textField initialText];
    } 
    //利用id特性:能调用任何对象的方法—我们就不用去修改代理的父类名称了
    - (void)textFieldDidBeginEditing:(id)textField
    {
      [textField initialText];
    }
    
    pragma mark -- 03 标签控制器标签栏设置背景
    • 对标签栏设置背景色的解决
    首先如果直接设置tabBar的背景色,系统会自动渲染成半透明的
    self.tabBar.backgroundColor = [UIColor orangeColor];
    有两种解决方案
    1.可以通过设置背景图片的方式给标签栏设置背景颜色,比如红色的背景图片,要求图片大小要正好 
    //用以下方式获得标签栏宽高后,创建一个背景图片,
    NSLog(@"%i,%i",(int)tabController.tabBar.frame.size.height,(int)tabController.tabBar.frame.size.width); tabController.tabBar.backgroundImage=[UIImage imageNamed:@"tabBarbg.png"];
    
    2.用UIAppearance设置(这样设置就不会渲染了)
    [[UITabBar appearance] setBarTintColor:[UIColor orangeColor]];
    
    pragma mark -- 04 设置图片的渲染模式
    • 有次给导航栏的右边按钮设置了一张图片,结果只显示了一个蓝色的图片,查了一下,原来是系统渲染在作怪
    直接给按钮设置图片是不行的,会被渲染为蓝色
    [rightItem setImage:[UImage imageName:@"save"]];
    我们可以单独设置一下图片的渲染模式
     UIImage *rightImage = [UIImage imageNamed:@"save.png"];
        //设置图像的渲染样式
        rightImage = [rightImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
       [rightItem setImage:rightImage];
    //渲染模式  
     UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。  
     UIImageRenderingModeAlwaysOriginal   // 始终绘制图片原始状态,不使用Tint Color。  
     UIImageRenderingModeAlwaysTemplate   // 始终根据Tint Color绘制图片,忽略图片的颜色信息。  
    
    pragma mark -- 05 UITableViewCell的点击效果设置
    • 很多时候我们不想要那个UITableViewCell点击时的灰色效果,可以这样设置
    cell.selectionStyle = UITableViewCellSelectionStyleNone;//取消点击效果
    //这下面三个设置了也不管用,都是灰色的背景 
        UITableViewCellSelectionStyleBlue
        UITableViewCellSelectionStyleGray
        UITableViewCellSelectionStyleDefault
    
    
    pragma mark -- 06 UITableView 滑动遇到的小问题
    • UITableView 滑动不到最底部,结果发现是没有减去标签栏的高度
    //必须要把49:标签栏的高度减去
    _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 99, self.view.mj_width,  self.view.mj_height - 99 - 49) style:UITableViewStylePlain];
    
    
    pragma mark -- 07 运行突然出现you don’t have permission to view it错误
    解决方法:
     将info.plist的文件中的Executable.file中的文件修改为:$(PRODUCT_NAME)
    
    pragma mark — 08 设置UITableViewCell的分割线最简单的方法
    • 最快最简单设置UITableViewCell分割线
    在自定义cell的.m文件中重写设置cell frame 的方法
    #pragma mark -- 重写cell的frame方法来自己设置Cell的布局
    -(void)setFrame:(CGRect)frame
    {
         //设置Cell的高度少1;为cell加上分割线,分割线颜色就是tableView的背景色
        frame.size.height -= 1;
        [super setFrame:frame];
     }
    
    
    pragma mark — 09 利用导航栏跳转时隐藏底部的tabBar栏
     NextViewController *nextVc = [[NextViewController alloc]init];
    //设置跳转到的页面标签栏隐藏    
    nextVc.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:nextVc animated:YES];
    //设置当前界面标签栏不隐藏
    self.hidesBottomBarWhenPushed = NO;
    
    
    pragma mark — 10 直接设置导航栏中间标题的字体大小和颜色
    1.有时我们想设置导航栏中间标题的字体样式,又不想去写一个titleLable 让:
    self.navigationItem.titleView = titleLabel;
    2.我们可以在系统默认的情况下直接设置
    self.title = @"导航栏标题";
     [self.navigationController.navigationBar setTitleTextAttributes:
    @{NSFontAttributeName:[UIFont systemFontOfSize:22],NSForegroundColorAttributeName:[UIColor orangeColor]}];
    
    
    pragma mark - 11 如何设置自定义字体

    辉少字体设置的博客

    pragma mark - 12 AFNetWorking 请求数据报”Request failed: unacceptable content-type: text/plain” 错误解决方法

    看这里

    相关文章

      网友评论

        本文标题:iOS 小问题解决方案 - 01

        本文链接:https://www.haomeiwen.com/subject/iqmcjttx.html