• 图片渲染成蓝色的问题


    在之前开发的过程中,遇到过这样一个小问题:给button设置一张图片,图片是灰色,美工做的图肯定没有问题 ,给button设置图片的方法也很简单,一句代码搞定,但是运行的时候却发现,图片无缘无故变成了蓝色。后来自己研究了一下发现,在给一些控件设置图片的时候会默认把图片渲染成蓝色,找到问题所在,就好结局了,解决方法如下:

    1
    2
    3
    4
    5
    6
    UIButton *loginBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];
    loginBtn.showsTouchWhenHighlighted = YES;
    UIImage *loginImg = [UIImage imageNamed:@"login"];
    loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [loginBtn setImage:loginImg forState:UIControlStateNormal];
    [self.view addSubview:loginBtn];

     

    - (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode

    这个方法就是用来设置图片的渲染模式的

    1
    UIImageRenderingModeAlwaysOriginal这个枚举值是声明这张图片要按照原来的样子显示,不需要渲染成其他颜色

    OK! 问题结局了。把这个小问题记录在这里 防止下次遇到又忘记怎么解决!

    顺便添一句,如果你的美工没有给你button的尺寸,只是给了你button的图片,那么你可以直接取到图片的尺寸,然后把button设置为和图片同样大小的尺寸

    1
    2
    3
    4
    5
    6
    7
    8
    UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    loginBtn.showsTouchWhenHighlighted = YES;
    UIImage *loginImg = [UIImage imageNamed:@"login"];
    loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
     [loginBtn setImage:loginImg forState:UIControlStateNormal];
    CGSize size = loginBtn.currentImage.size;//取到button的image的尺寸
    loginBtn.frame = CGRectMake(100, 100, size.width, size.height);
    [self.view addSubview:loginBtn];
  • 相关阅读:
    elselect下拉数据过多解决办法
    移动端开发遇到的问题汇总
    win7系统可关闭的服务
    安装Qcreator2.5 + Qt4.8.2 + MinGW_gcc_4.4 (win7环境)
    学习Qt的资源
    c++学习 定位new表达式
    eltablecolumn中添加echarts
    js对象数组封装,形成表格,并在表格中添加echarts直折线图
    Unity学习笔记3:随机数和动画脚本
    关于Unity的一些概念和语法
  • 原文地址:https://www.cnblogs.com/blogfantasy/p/4863367.html
Copyright © 2020-2023  润新知