IOS 10,JSQMessagesAvatarImageFactory.avatarImage的当前语法是什么(未知参数)

IOS 10,What's the current syntax for JSQMessagesAvatarImageFactory.avatarImage(Unknow parameters)

我正在关注 IOS 聊天教程,但是教程有点过时了, 在教程中,讲师的语法是:

JSQMessagesAvatarImageFactory.avatarImageWithImage(UIImage(named: "pictureNameWithoutExtention"), diameter: 30)

但此方法已被替换为:

JSQMessagesAvatarImageFactory.avatarImage(thisIsSomeCodeBlock<#T##JSQMessagesAvatarImageFactory#>EndSomecodeBlock)

我尝试了以下代码和其他一些代码,none 其中有效:

JSQMessagesAvatarImageFactory.avatarImage(UIImage(named: "pictureNameWithoutExtention"), diameter: 30)

JSQMessagesAvatarImageFactory.avatarImage(with image: UIImage(named:"pictureNameWithoutExtention"), diameter: 30)

此方法的当前语法是什么?它需要什么参数?

同样,当我命令+单击时,我得到了这个文档,但仍然不明白:

/**
 *  Creates and returns a `JSQMessagesAvatarImage` object with the specified image that is
 *  cropped to a circle of the given diameter and used for the `avatarImage` and `avatarPlaceholderImage` properties
 *  of the returned `JSQMessagesAvatarImage` object. This image is then copied and has a transparent black mask applied to it, 
 *  which is used for the `avatarHighlightedImage` property of the returned `JSQMessagesAvatarImage` object.
 *
 *  @param image    An image object that represents an avatar image. This value must not be `nil`.
 *
 *  @return An initialized `JSQMessagesAvatarImage` object.
 */
open func avatarImage(with image: UIImage) -> JSQMessagesAvatarImage

我在谷歌上搜索了很多,none 文档中有关于此方法的示例或演示,我的意思是文档甚至不是用简单的英语编写的......为什么其他人似乎理解起来没问题,有什么技巧吗?

尝试使用它,但该函数似乎不接受 radius

JSQMessagesAvatarImageFactory.avatarImage(with: UIImage(named:"pictureNameWithoutExtention")!)

p.s.: 如果在使用该函数之前检查 unwrap the optional 可能会更好。

最好的例子是 "JSQMessagesViewContoller" 它位于项目

https://github.com/jessesquires/JSQMessagesViewController/tree/develop/SwiftExample

最近更新到了Swift3。如果您查看 demoConversation,它会以几种方式实现。

let AvatarLeonard = JSQMessagesAvatarImageFactory().avatarImage(withUserInitials: "DL", backgroundColor: UIColor.jsq_messageBubbleGreen(), textColor: UIColor.white, font: UIFont.systemFont(ofSize: 12))

这就是为没有照片的人制作头像的方法。这会创建一个带有首字母的圆圈,并使图像不为零。

// Create avatar with Placeholder Image
let AvatarJobs = JSQMessagesAvatarImageFactory().avatarImage(withPlaceholder: UIImage(named:"demo_avatar_jobs")!)

关于为什么文档如此难以理解的问题是,很难向您展示图书馆的所有可能,尤其是在不了解每个人的背景或经验的情况下。所以文档试图概述所有可能的事情,90% 的事情你不需要它是某人为特定用例添加的功能。

此外,如果 perimeter 是可选的,则不必在函数中传递它。所以很难理解什么是你绝对需要的,什么是可以省略的。随着您获得更多经验并了解正在发生的事情,这将随着时间的推移而到来。

现在回答您关于可能与您的功能无关的两种方法的问题。查看示例项目中的 chatViewController 在顶部有这些行

collectionView?.collectionViewLayout.incomingAvatarViewSize = CGSize(width: kJSQMessagesCollectionViewAvatarSizeDefault, height:kJSQMessagesCollectionViewAvatarSizeDefault )
collectionView?.collectionViewLayout.outgoingAvatarViewSize = CGSize(width: kJSQMessagesCollectionViewAvatarSizeDefault, height:kJSQMessagesCollectionViewAvatarSizeDefault )

这些设置了CollectionViewLayout 的头像大小。这可能看起来令人困惑,因为您可以在 JSQImageFactory 方法中传递头像的大小,但 collectionViewLayout 会根据视图中其他组件的大小处理四处移动的内容。因此,通过添加这些行,Collection 视图知道可以移动消息气泡以腾出空间并使头像出现在正确的位置。

我希望我能够足够清楚地传达。如果您有更多问题,请随时提问。祝你好运。