【问题标题】:Swift - resize image iMessage appSwift - 调整图像 iMessage 应用程序的大小
【发布时间】:2017-01-07 11:34:38
【问题描述】:

我正在为自定义表情符号等键盘应用程序制作带有图像的 iMessage 应用程序。我在 iMessage 故事板上设置了插座并连接了按钮。在我的 MessageViewController 中,我的 IBOUlet 中有以下代码。我想将图像调整得更小,但我似乎无法弄清楚这一点。非常感谢任何帮助!

@IBAction func button(_ sender: Any) { 
    label.text = "button pressed"
    let layout = MSMessageTemplateLayout()
    layout.image = UIImage(named: "270a.png")
    let message = MSMessage()
    message.layout = layout
    activeConversation?.insert(message, completionHandler: nil) 
}

【问题讨论】:

    标签: ios swift imessage-extension


    【解决方案1】:

    当您将图像添加到消息模板时,您可以请求宽度和高度,但它会将图像放大或缩小(考虑纵横比)到它认为最佳的大小。

    如果您拥有的图像资源不是您想要的大小,您可以尝试在内存中创建一个新图像,但MSMessageTemplateLayout 会根据需要对其进行修改。

    let original = UIImage(named: "background")
    
    // use CGContext to create new image in memory
    // 10 x 10 is super small, so messages app will scale this up
    let image = CGSize(width: 10, height: 10).image { context, frame in
    
        original?.draw(in: frame, blendMode: .luminosity, alpha: 1)
    }
    
    let message = MSMessage()
    let layout = MSMessageTemplateLayout()
    
    layout.image = image
    message.layout = layout
    
    self.activeConversation?.insert(message, completionHandler: nil)
    

    我喜欢使用这个扩展来简化 CGContext 的工作: https://gist.github.com/mathewsanders/94ed8212587d72684291483905132790

    【讨论】:

    • 谢谢,试一试...我正在尝试使用自定义“表情符号”制作像和服这样的应用程序。也许我以错误的方式解决这个问题,但我认为我走在正确的道路上。大声笑我们会看到的。
    • 您可能需要考虑使用MSSticker 而不是MSMessage,因为它可以更灵活地将资产放置在屏幕的不同部分。如果您需要在运行时获取图像资产,您可以在代码中创建它,但如果您是捆绑包的一部分,您可以制作贴纸包,而无需晚上编写任何代码!如果您采用运行时方法,这里有一个很好的教程:willowtreeapps.com/blog/imessage-apps-part-one
    • 谢谢,我已经在贴纸中设置了它,但这并不是我想要的,我想要更多地控制外观。我最终找到了这个,看起来我应该使用粘贴板,实际上使我的代码更短,只需要专注于设计和滚动页面。只需要确保我可以得到像表情符号一样小的图片。如果没有问题,我会走你建议的路线:-) stackoverflow.com/questions/31741015/…
    猜你喜欢
    • 2016-12-31
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多