美文网首页iOS 深度好文经验之谈
UIImageRenderingMode 属性详解

UIImageRenderingMode 属性详解

作者: 桑夏君 | 来源:发表于2017-11-19 11:11 被阅读42次

    在iOS 7中 UIImage新增了一个只读属性renderingMode,同时增加了一个方法

    -(UIImage *)imageWithRenderingMode (UIImageRenderingMode)renderingMode

    用于设置image的renderingMode使用这个属性可以设置图片是否要使用当前视图的tintColor。

    renderingMode有三种,以下是其枚举值

    typedef NS_ENUM(NSInteger, UIImageRenderingMode) {
        UIImageRenderingModeAutomatic,         
         // Use the default rendering mode for the context where the image is used
        UIImageRenderingModeAlwaysOriginal,     
        // Always draw the original image, without treating it as a template
        UIImageRenderingModeAlwaysTemplate,     
        // Always draw the image as a template image, ignoring its color information
        } NS_ENUM_AVAILABLE_IOS(7_0)
    
    • UIImageRenderingModeAutomatic是图片默认的渲染模式,会根据图片的上下文自动选择渲染方式。
    • UIImageRenderingModeAlwaysOriginal设置图片始终保持原图色彩,不随tintColor的改变而改变
    • UIImageRenderingModeAlwaysTemplate是图片无视自己的色彩信息,使用追随当前视图的tintColor。

    尝试一下

    使用默认模式的image
    这个按钮设计图,原图是白色,使用了默认的UIImageRenderingModeAutomatic图片渲染方式,可以看出,此时这张图片的色彩和button的tintColor保持了一致。 backgroundColor和tintColor一致

    在我将button背景颜色和tintColor设为相同颜色时,button中的图片并没有如我想象的将图片恢复本来的颜色。

    UIImageRenderingModeAlwaysOriginal模式下的image
    在我将图片的渲染模式设置成UIImageRenderingModeAlwaysOriginal时,不管button的tintColor如何改变,图片始终保持其真实色彩。 UIImageRenderingModeAlwaysTemplate下的image
    在设置了图片渲染模式为UIImageRenderingModeAlwaysTemplate后,button中图片的颜色始终和其tintColor保持一致。

    相关文章

      网友评论

        本文标题:UIImageRenderingMode 属性详解

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