2016-10-23 1 views
0

ich bin nach einem IOS-Chat-Tutorial, aber das Tutorial ist ein wenig veraltet, im Tutorial der Instruktor-Syntax war:IOS 10, was die aktuelle Syntax für JSQMessagesAvatarImageFactory.avatarImage ist (Unknow Parameter)

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

aber diese Methode ersetzt wurde:

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

i unten Codes versucht, und einige andere, keiner von ihnen arbeitete:

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

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

Wie lautet die aktuelle Syntax für diese Methode? Welche Parameter braucht es?

auch wenn i + Befehl klicken ich diese Dokumentation erhalten, aber immer noch nicht verstehen:

/** 
* 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 

i gegoogelt viel darüber, keiner der Dokumentation hat Beispiel oder Demonstration zu dieser Methode, ich meine die Dokumentationen sind nicht einmal in einfachem Englisch geschrieben ... wieso scheint es so, als hätten alle anderen kein Problem, sie zu verstehen, gibt es irgendwelche Tricks?

+0

Es ist eine Instanzfunktion, keine Klassenfunktion. Sie müssen eine Instanz der 'JSQMessagesAvatarImageFactory' erstellen, um die Funktion aufzurufen. – dan

+0

override func collectionView (_ SammlungAnsicht: JSQMessagesCollectionView, avatarImageDataForItemAt indexPath: IndexPath) -> JSQMessageAvatarImageDataSource? { zurückgeben JSQMessagesAvatarImageFactory.avatarImage (mit: UIImage (mit dem Namen: "profileImage")!) } –

+0

Ich habe versucht, oben genannten Code immer noch diesen Compiler-Fehler: ChatViewController.swift: 204: 46: 'avatarImage' erzeugt 'JSQMessagesAvatarImage', nicht der erwartete kontextabhängige Ergebnistyp 'JSQMessageAvatarImageDataSource?' –

Antwort

2

Das beste Beispiel zu sehen ist, in der „JSQMessagesViewContoller“ im Projekt befindet sich

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

Es wurde in der swift3 kürzlich aktualisiert worden. Wenn Sie sich die DemoConversation anschauen, wird sie auf verschiedene Arten umgesetzt.

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

So würden Sie einen Avatar für jemanden erstellen, der kein Bild hat. Dies erzeugt einen Kreis mit Initialen und macht das Bild nicht null.

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

Zu Ihrer Frage auf, warum die Dokumentation so schwer zu verstehen ist, dass schwierig ist es, Ihnen alles zu zeigen, die mit der Bibliothek möglich ist, vor allem nicht jedermanns Hintergrund oder Erfahrung zu kennen. Die Dokumentation versucht also, alles zu skizzieren, was möglich sein könnte, und 90% der Dinge, die Sie nicht benötigen, ist eine Funktion, die jemand für einen bestimmten Anwendungsfall hinzugefügt hat.

Auch wenn ein perimeter optional ist, muss es nicht in der Funktion übergeben werden. So kann es schwierig werden zu verstehen, was Sie unbedingt brauchen und was weggelassen werden kann. Dies wird mit der Zeit kommen, wenn Sie mehr Erfahrung haben und verstehen, was passiert.

Nun zu Ihrer Frage zu keiner der Methoden, die möglicherweise nicht mit Ihrer Funktion zu tun haben. Mit Blick auf den chatViewController im Beispielprojekt hat diese Zeilen nach oben an der Spitze

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

Diese die Größe des Avatars für den CollectionViewLayout gesetzt.Es mag verwirrend erscheinen, weil Sie die Größe des Avatars in der JSQImageFactory-Methode übergeben können, aber das collectionViewLayout übernimmt die Verschiebung der Dinge basierend auf der Größe anderer Komponenten in der Ansicht. Durch das Hinzufügen dieser Zeilen kann die Ansicht "Sammlung" die Meldungsblasen verschieben, um Platz zu schaffen und die Avatare an der richtigen Stelle erscheinen zu lassen.

Ich hoffe, dass ich in der Lage war, klar genug zu kommunizieren. Wenn Sie weitere Fragen haben, zögern Sie nicht zu fragen. Viel Glück.

+0

danke für die Lösung meiner Probleme, alles hat perfekt funktioniert! Schätze es wirklich. –

+0

Ich bin froh, dass es geholfen hat. –

0

Versuchen Sie dies, scheint, wie die Funktion radius obwohl nicht akzeptiert.

p.s .: es könnte besser sein, wenn Sie das optionale Option vor der Verwendung der Funktion auspacken.

+0

override func collectionView (_ SammlungAnsicht: JSQMessagesCollectionView, avatarImageDataForItemAt indexPath: IndexPath) -> JSQMessageAvatarImageDataSource? {return JSQMessagesAvatarImageFactory.avatarImage (mit: UIImage (mit dem Namen: "profileImage")!)} –

+0

Ich habe Ihren Code versucht, immer noch diesen Compilerfehler: ChatViewController.swift: 204: 46: 'avatarImage' erzeugt 'JSQMessagesAvatarImage', nicht der erwartete kontextabhängige Ergebnistyp 'JSQMessageAvatarImageDataSource?' –

Verwandte Themen