美文网首页iOS 11
iOS11 界面适配

iOS11 界面适配

作者: 樂亦leeyii | 来源:发表于2017-09-15 13:05 被阅读129次

    iOS11 UINavigationBar界面图层发生变化

    原来的UIBarButtonItem是直接添加到navigationBar上面
    iOS11则由添加了_UINavigationBarContentView管理UIBarButtonItem.

    在我的应用中更新到iOS11发现导航栏的item显示发生错误.
    原因是图片的原始尺寸大于控件的尺寸,在iOS11之前我的解决方案是L

      //iOS11之前解决方法
      UIButton *leftBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
      [leftBtn addTarget:self action:@selector(leftBtn) forControlEvents:UIControlEventTouchUpInside];
      [leftBtn setBackgroundImage:[UIImage imageNamed:@"ic_launcher"] forState:UIControlStateNormal];
      UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];
    

    通过button的对图片进行压缩,使图片显示能够如我期望的那样.
    但是在iOS11之后添加_UIButtonBarStackView之后,我发现上面的方法失效了,不会对图片进行压缩了(具体原因还不清楚), 这个方法是行不通了,那就需要解决方案:
    有两个解决方案:
    1.自己手动实现图片压缩,通过给UIImage添加分类

    - (UIImage *)reSizeImagetoSize:(CGSize)reSize
    {
    
            UIGraphicsBeginImageContextWithOptions(reSize, NO, 0);
    
            [self drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
        
            UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
    
            UIGraphicsEndImageContext();
    
            return reSizeImage;
    }
    

    2.通过工具生成需要的尺寸的图片.
    最好就是UI给图片尺寸就是需要的大小.(可惜我们不是....惨/(ㄒoㄒ)/~~)

     //iOS11实现方案 只需要改变这一个方法,其他方法不变
     [leftBtn setBackgroundImage:[[UIImage imageNamed:@"ic_launcher"] reSizeImagetoSize:CGSizeMake(30, 30)] forState:UIControlStateNormal];
    

    相关文章

      网友评论

        本文标题:iOS11 界面适配

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