【问题标题】:Change UIImage render mode at runtime在运行时更改 UIImage 渲染模式
【发布时间】:2019-10-01 12:28:41
【问题描述】:

在我正在开发的应用程序中,我有一些可能(或可能不需要)需要定制的 UIImageView。如何将在运行时作为原始加载到模板的图像的呈现模式更改?

【问题讨论】:

    标签: ios uiimageview uiimage


    【解决方案1】:

    你可以从另一个cgImage初始化一个UIImage,然后你可以根据需要渲染它

    示例代码

    let originalImage = UIImage(named: "TimeClock2Filled")?.withRenderingMode(.alwaysOriginal)
    if let original = originalImage?.cgImage {
        let image2 = UIImage(cgImage: original).withRenderingMode(.alwaysTemplate)
    }
    

    Objective-C 示例代码

    UIImage * image = [[UIImage imageNamed:@"TimeClock2Filled"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    if(image.CGImage != nil) {
        UIImage * image2 = [[UIImage imageWithCGImage:image.CGImage]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    }
    

    经过测试,效果很好

    【讨论】:

    • 你也可以添加objective-c答案吗?该项目在 obj-c 中
    • @user426132 请问您能提供一些关于答案的反馈吗?
    • 好的,哇.. 着色工作但现在图像无法缩放以适合图像视图并且太大......我尝试将内容模式设置为 aspectFit 但它不起作用跨度>
    • 奇怪的@user426132 因为不应该改变大小或形式,你能在不做任何修改的情况下正常测试你的图像,看看会发生什么吗?至少在我的测试中没有,只有颜色没有变化跨度>
    • 我在初始化中添加了比例,现在可以使用了
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2016-09-02
    • 2014-03-14
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多