The changelog for MessageKit
. Also see the releases on GitHub.
- Breaking Change Added new methods to simplify using of custom messages:
customCellSizeCalculator(for:at:in:)
forMessagesLayoutDelegate
andcustomCell(for:at:in:)
forMessagesDataSource
. #879 by @realbonus
- Change acl of
handleGesture(touchLocation:)
inMessageLabel
from internal to open. #912 by @julienkode
-
Breaking Change Updated codebase to Swift 4.2 #883 by @nathantannar4
-
Fixed the way that the Strings and UIImages are parsed in the
InputTextView
to prevent crashes inparseForComponents()
. #791 by @nathantannar4
-
Added support for detection and handling of
NSLink
s inside of messages. #815 by @jnic -
Added customizable
accessoryView
, with a newMessagesDisplayDelegate
functionconfigureAccessoryView
, and corresponding size & padding properties inMessageSizeCalculator
. TheaccessoryView
is aligned to the center of themessageContainerView
. #710 by @hyouuu -
Added a tap gesture recognition to the
accessoryView
which calls theMessageCellDelagate
functiondidTapAccessoryView(in:)
. #834 by @nathantannar4 -
Added
additionalBottomInset
property that allows to adjust the bottom content inset automatically set on the messages collection view by the view controller. #787 by @andreyvit
-
Breaking Change Fixed typo of
scrollsToBottomOnKeybordBeginsEditing
toscrollsToBottomOnKeyboardBeginsEditing
. #856 by @p-petrenko -
Fixed a bug that prevented
MessageLabel
from laying out properly when contained by superviews using autolayout. #889 by @marius-serban. -
Fixed bottom content inset adjustment when using an undocked keyboard on iPad, or when
edgesForExtendedLayout
does not include.top
, or when a parent container view controller adds extra views at the top of the screen. #787 by @andreyvit -
Fixed the
MessageData.emoji
case to use 2x themessageLabelFont
size by default. #795 by @Vortec4800.
-
Fixed
MessagesCollectionView
to allow to use nibs withMessageReusableView
. #832 by @maxxx777. -
Fixed multiple crashes at views, when views are being called from another XIB. #905 by @talanov.
- First major release.
-
Fixed
MessageContentCell
's subviewsframe
when size equal to.zero
. #716 by @zhongwuzw. -
Fixed
MessagesCollectionView
's bottom inset when hardware keyboard is connected. Do not adjustMessagesCollection
's inset when being popped. #707 by @zhongwuzw. -
Fixed
LabelAlignment
initializer which has default internal access control. #705 by @zhongwuzw.
- Added convenience method to set properties for all
MessageSizeCalculator
s. #697 by @zhongwuzw.
-
Breaking Change Added new
MessagesDataSource
delegate methods,numberOfSections(in)
andnumberOfItems(inSection:in)
. #601 by @SD10, @zhongwuzw. -
Breaking Change Added new protocol
MediaItem
as the associated value for theMessageData.video
andMessageData.photo
cases. #587 by @SD10. -
Breaking Change Added new protocol
LocationItem
as the associated value for theMessageData.location
case. #587 by @SD10. -
Breaking Change Added new
DetectorType
called.transitInformation
to message label. #520 by @nosarj. -
Breaking Change Added
.custom(Any?)
case toMessageData
. #498 by @SD10. -
Breaking Change Added
.messageLabelTop
case toAvatarPosition.Vertical
enum. #596 by @zhongwuzw -
Added
CellSizeCalculator
protocol that is responsible for sizing and configuring attributes of aMessageCollectionViewCell
. #579 by @SD10. -
Added
MessageSizeCalculator
,MediaMessageSizeCalculator
,TextMessageSizeCalculator
, andLocationMessageSizeCalculator
classes that are responsible for sizing theMessagesCollectionViewCell
types provided by MessageKit. #579 by @SD10. -
Added three new methods
cellTopLabelHeight(for:at:in)
,messageTopLabelHeight(for:at:in)
, andmessageBottomLabelHeight(for:at:in)
toMessagesLayoutDelegate
. #580 by @SD10. -
Added new method
configureMediaMessageImageView(_:for:at:in)
to configure theUIImageView
of aMediaMessageCell
asynchronously. #592 by @zhongwuzw, @SD10 -
Added new
MessageContentCell
class andMessageReusableView
class. #596 by @SD10.
-
Breaking Change Renamed
MessageData
enum toMessageKind
and changedMessageType
'sdata
property name tokind
. #658 by @zhongwuzw. -
Breaking Change Changed the
messageFooterView(for:in)
andmessageHeaderView(for:in)
methods ofMessagesDisplayDelegate
by removing themessage
parameter. #615 by @SD10. -
Breaking Change Changed the
footerViewSize(for:in)
andheaderViewSize(for:in)
methods ofMessagesLayoutDelegate
by removing theMessageType
andIndexPath
parameters and replacing them with a newsection: Int
parameter. #615 by @SD10. -
Breaking Change The reuse identifiers of all
MessageReusableView
s andMessageCollectionViewCell
s have been changed to match their class name exactly. #615 by @SD10. -
Breaking Change
MessageHeaderView
andMessageFooterView
now subclassMessageReusableView
class. #596 by @SD10. -
Breaking Change Renamed
MessageCollectionViewCell
toMessageContentCell
. TheMessageCollectionViewCell
class is now a bare bones subclass. #596 by @SD10. -
Breaking Change Changed
LabelAlignment
to be astruct
with properties oftextAlignment: NSTextAlignment
andtextInsets: UIEdgeInsets
to position the text in thecellTopLabel
andcellBottomLabel
. #580 by @SD10. -
Breaking Change The type of
cellTopLabel
andcellBottomLabel
has been changed toInsetLabel
. #580 by @SD10. -
Breaking Change Renamed
cellTopLabel
tomessageTopLabel
and renamedcellBottomLabel
tomessageBottomLabel
. #659 by @SD10. -
Breaking Change Renamed the
didTapTopLabel
anddidTapBottomLabel
methods ofMessageCellDelegate
todidTapMessageTopLabel
anddidTapMessageBottomLabel
. #659 by @SD10. -
Breaking Change Renamed
cellBottomLabelAttributedText
method ofMessagesDataSource
tomessageBottomLabelAttributedText
. #659 by @zhongwuzw. -
The
MessageData.emoji
case no longer uses a default font of 2x themessageLabelFont
size. You must now set this font explicitly through theemojiMessageSizeCalculator
onMessagesCollectionViewFlowLayout
. #530 by @SD10. -
Changed the
contentMode
of theUIImageView
forMediaMessageCell
to be.scaleAspectFill
. #587 by @SD10. -
The result of the
MessagesDisplayDelegate
methodtextColor(for message:...)
no longer applies to.attributedText
case ofMessageData
. #625 by @cwalo. -
Removed the explicit height constraint from the
separatorLine
inMessageInputBar
. #667 by @zhongwuzw
-
Breaking Change Removed
NSLayoutConstraintSet
by changing access control frompublic
tointernal
. #607 by @zhongwuzw. -
Breaking Change Removed the
showsDateHeaderAfterTimeInterval
property ofMessagesCollectionView
. #615 by @SD10. -
Breaking Change Removed the
reuseIdentifer
method fromMessageCollectionViewCell
,TextMessageCell
,LocationMessageCell
,MediaMessageCell
, andMessageContentCell
. #615 by @SD10. -
Breaking Change Removed the
CollectionViewReusable
protocol. #615 by @SD10. -
Breaking Change Removed
MessageHeaderView
andMessageFooterView
in favor ofMessageReusableView
. #615 by @SD10. -
Breaking Change Removed
numberOfMessages(in)
method ofMessagesDataSource
, instead please usenumberOfSections(in)
andnumberOfItems(inSection:in)
. #601 by @SD10, @zhongwuzw. -
Breaking Change Removed the
messageLabelFont
property fromMessagesCollectionViewFlowLayout
. You can now set this property throughtextMessageSizeCalculator
property. #579 by @SD10. -
Breaking Change Removed
MessageDateHeaderView
class in favor of usingcellTopLabel
. #659 by @zhongwuzw.
- Fixed equality checking on
MessagesCollectionViewLayoutAttributes
. #593 by @zhongwuzw, @SD10
- Fixed
MessageLabel
touch location offset calculation. #664 by @austinwright.
-
Fixed
bubbleTailOutline
invalidation of message bubble. #633 by @zhongwuzw. -
Fixed
boundingRect(with:options:attributes:context)
wrong size calculation when use some font, e.g. custom font. #645 by @zhongwuzw.
- Fixed font invalidation of
attributedString
inMessageLabel
. #623 by @zhongwuzw.
- Added
shouldManageSendButtonEnabledState
toMessageInputBar
to disable automatically managingMessageInputBar.sendButton
'sisEnabled
state when text changes. (Default value istrue
). #530 by @clayellis.
- Fixed wrong separated components in messageInputBar. #577 by @zhongwuzw.
-
Optimize
collectionView
scroll behavior when abruptly stops scrolling. #470 by @zhongwuzw. -
Fixed
messageInputBar
sendButton not disabled in some situations. #475 by @zhongwuzw. -
Fixed message bubble tail orientation invalidation in
iOS9
. #469 by @zhongwuzw.
-
Fixed message rendering when
MessagesViewController
sliding back. #454 by @zhongwuzw. -
Fixed
iPhoneX
MessageInputBar
transparent bottom area whenkeyboardDismissMode
isinteractive
. #425 by @zhongwuzw. -
Fixed wrong
contentInset
calculation whennavigationBar
ishidden
#444 by @zhongwuzw.
-
Added
configureAvatarView(_ avatarView: AvatarView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView)
method inMessagesDisplayDelegate
protocol
to configureavatarView
. #416 by @zhongwuzw. -
Added copy support for image, text, and emoji messages. #418 by @zhongwuzw.
-
Added
UIImage
paste support to theInputTextView
. Images can easily be accessed using theInputTextView.images
property. See the example project for an updated use case.
#423 by @nathantannar4.
- Breaking Change Removed
avatar(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView)
method ofMessagesDataSource
, useconfigureAvatarView(_ avatarView: AvatarView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView)
instead. #416 by @zhongwuzw.
-
Breaking Change Moved the
handleTapGesture(_ gesture: UIGestureRecognizer)
method fromMessagesCollectionViewCell
toMessagesCollectionView
. #417 by @zhongwuzw. -
Breaking Change Changed
AvatarView
from typeUIView
to typeUIImageView
. #417 by @zhongwuzw.
-
Fixed
LocationMessageCell
reuse bug, to avoid inconsistency when get capture image asynchronously. #428 by @zhongwuzw. -
Fixed
MessageLabel
detector attributes not being applied due to early exit. #429 by @antoinelamy.
-
Added
reloadDataAndKeepOffset()
method toMessagesCollectionView
to maintain the current position when reloading data. #284 by @azurechen. -
Added
maintainPositionOnKeyboardFrameChanged: Bool
property to maintain the current position of theMessagesCollectionView
when the height of theMessageInputBar
changes. #340 by @KEN-chan. -
Added
detectorAttributes(for:and:at:)
method toMessagesDisplayDelegate
allowingDetectorType
attributes to be set outside of the cell. #397 by @SD10.
-
Fixed
indexPathForLastItem
bug whennumberOfSections
equal to 1. #395 by @zhongwuzw. -
Fixed
scrollToBottom(animated:)
not work in some situations. #395 by @zhongwuzw. -
Fixed
.attributedText(NSAttributedString)
messages that were not using thetextColor
from theMessagesDisplayDelegate
method. #414 by @SD10. -
Fixed a bug where new messages using
.attributedText(NSAttributedString)
have the incorrect font. #412 by @SD10.
-
Breaking Change The
MessageLabel
propertiesaddressAttributes
,dateAttributes
,phoneNumberAttributes
, andurlAttributes
are now read only. Please usesetAttributes(_:detector:)
to set these properties. #397 by @SD10. -
Breaking Change Removed the generic constraint
<ContentView: UIView>
fromMessageCollectionViewCell
. #391 by @SD10. -
Breaking Change The
contentView
property has been renamed toimageView
forLocationMessageCell
andMediaMessageCell
andmessageLabel
forTextMessageCell
. #391 by @SD10. -
Breaking Change Changed the name of
MessageInputBar
's propertymaxHeight
tomaxTextViewHeight
as the property is the max height theInputTextView
can have, not theMessageInputBar
itself. #380 by @nathantannar4. -
Breaking Change Adds a new view
contentView
of typeUIView
to the MessageInputBar to hold the main subviews of theMessageInputBar
. Reduces complexity of constraints for easier testing/debugging. #384 by @nathantannar4.
- Breaking Change Removed
scrollsToBottomOnFirstLayout
flag ofMessagesViewController
. #395 by @zhongwuzw.
-
Breaking Change Added a top
InputStackView
toMessageInputBar
. This adds the addition of the.top
case toInputStackView.Position
. #320 by @nathantannar4. -
Breaking Change Added
AvatarPosition
andavatarPosition(for:at:in)
to configure anAvatarView
's vertical and horizontal position in aMessageCollectionViewCell
. #322 by @SD10. -
Added
shouldCacheLayoutAttributes(for:MessageType)-> Bool
method toMessagesLayoutDelegate
to manage whether aMessageType
's layout information is cached or not. #364 by @SD10.
-
Breaking Change The
cellTopLabel
andcellBottomLabel
properties ofMessageCollectionViewCell
are no longer typed asMessageLabel
and are now regularUILabel
s. #355 by @SD10. -
All
DetectorType
s forMessageLabel
are disabled by default. #356 by @SD10.
-
Breaking Change Fixed all instances of misspelled
inital
property.Avatar.inital
has changed toAvatar.initial
and the initializer has changed frompublic init(image: UIImage? = nil, initals: String = "?")
topublic init(image: UIImage? = nil, initials: String = "?")
. #298 by @sidmclaughlin. -
Fixed
MessageInputBar
'stranslucent
functionality. #348 by @zhongwuzw. -
Fixes infinite loop when dismissing keyboard on iPhone X. #350 by @nathantannar4.
-
Fixed incorrect sizing of
cellTopLabel
andcellBottomLabel
. #371 by @SD10.
-
Breaking Change Removed
AvatarAlignment
andavatarAlignment(for:at:in)
delegate method in favor of newAvatarPosition
representing both vertical and horizontal alignments. #322 by @SD10. -
Breaking Change Removed the
avatarAlwaysLeading
andavatarAlwaysTrailing
properties of `MessagesCollectionViewFlow$ #322 by @SD10. -
Breaking Change Removed
LocationMessageDisplayDelegate
&TextMessageDisplayDelegate
and moved their methods into theMessagesDisplayDelegate
protocol. RemovedLocationMessageLayoutDelegate
&MediaMessageLayoutDelegate
and moved their methods into theMessagesLayoutDelegate
protocol. #363 by @SD10.
-
Fixed
contentInset.top
adjustment of theMessagesCollectionView
on iOS versions less than 11 where it was found that messages appeared under the navigation var #334 by @nathantannar4. -
Fixed
cellbottomLabel
origin X for the.messageLeading
alignment and origin Y so that thecellBottomLabel
is always under theMessageContainerView
. #326 by @SD10. -
Fixed pixelation of
AvatarView
's placeholder text initials. #343 by @johnnyoin. -
Fixed
MessageLabel
address detection handler. #341 by @zhongwuzw -
Fixed crash for escaping block in
InputBarItem
’ssetSize(newValue:animated)
method. #342 by @zhongwuzw.
-
Fixed a bug that caused a race condition to be met when invalidating the
intrinsicContentSize
of theMessageInputBar
which froze the app during a "Select" or "Select All" long press #313 by @zhongwuzw. -
Fixed a bug that the
placeholderLabel
subview
ofInputTextView
leads to ambiguous content size because of uncorrectAuto Layout
. #310 by @zhongwuzw. -
Fixed a bug that the
leftStackView
、rightStackView
subview
ofMessageInputBar
leads to ambiguousAuto Layout
issue because of typo. #311 by @zhongwuzw.
- Changed
InputStackView
defaultalignment
from.fill
to.bottom
. #311 by @zhongwuzw.
-
Added
removedCachedAttributes(for:MessageType)
,removeAllCachedAttributes()
, andattributesCacheMaxSize
toMessagesCollectionViewFlowLayout
to manage the caching of layout information for messages. #263 by @SD10. -
Created
SeparatorLine
andInputStackView
as their own subclass ofUIView
andUIStackView
respectively. This just improves reusability. #273 by @nathantannar4.
-
Breaking Change The properties
leftStackView
,rightStackView
andbottomStackView
inMessageInputBar
are now of typeInputStackView
. The propertyseparatorLine
is also now of typeSeparatorLine
inMessageInputBar
. #273 by @nathantannar4. -
Layout information is now being cached by
MessagesCollectionViewFlowLayout
for eachMessageType
using themessageId
property. (This means if your layout is dynamic over theIndexPath
you need to handle cache invalidation). #263 by @SD10. -
Layout anchors for the
MessagesCollectionView
andMessageInputBar
now include the safeAreaLayoutGuide to fix layout issues on iPhone X #280 by @nathantannar4.
-
Fixed a bug that prevented the
textAllignment
property ofInputTextView
'splaceholderLabel
from having noticable differences when changed to.center
or.right
. #262 by @nathantannar4. -
Initial
contentInset.bottom
reference changed frommessageInputBar
toinputAccessoryView
to allow custominputAccessoryView
's that don't break the initial layout. #267 by @nathantannar4. -
Changes the
MessageInputBar
bottomUIStackView
'sbottomAnchor
tolayoutMarginsGuide.bottomAnchor
to fix issues on the iPhone X. #266 by @nathantannar4. -
Initial
contentInset.bottom
reference changed frommessageInputBar
toinputAccessoryView
to allow custom inpinputAccessoryView
's that don't break the initial layout #267 by @nathantannar4.
- Breaking Change Removed
additionalTopContentInset
property ofMessagesViewController
because this is no longer necessary whenextendedLayoutIncludesOpaqueBars
istrue
. #250 by @SD10.
-
Breaking Change
.custom((MessageContainerView)->Void)
case toMessageStyle
enum. #163 by @SD10. -
Breaking Change
UIEdgeInsets
associated value to allLabelAlignment
enum cases. #166 by @SD10. -
Breaking Change
.emoji(String)
case toMessageData
enum. #222 by @SirArkimdes. -
Breaking Change
TextMessageDisplayDelegate
to handleenabledDetecors(for:at:in)
and movestextColor(for:at:in)
to this namespace. #230 by @SD10 -
LocationMessageDisplayDelegate
to customize a location messages appearance and add aMKAnnotationView
to location message snapshots. #150 by @etoledom. -
messageLabelInsets(for:indexPath:messagesCollectionView
method toMessagesLayoutDelegate
. #162 by @SD10. -
animationBlockForLocation(message:indexPath:messagesCollectionView)
method toLocationMessageDisplayDelegate
to customize the display animation of the location message's map. #210 by @etoledom. -
scrollsToBottomOnFirstLayout
property to automatically scroll to the bottom ofMessagesCollectionView
on first load. #213 by @FraDeliro. -
scrollsToBottomOnKeyboardDidBeginEditing
property to automatically scroll to the bottom ofMessagesCollectionView
when the keyboard begins editing. #217 by @SD10. -
additionalTopContentInset
property toMessagesColectionViewController
to allow users to account for extra subviews. #218 by @SD10. -
messagePadding(for:at:in)
method toMessagesLayoutDelegate
to dynamically set padding aroundMessageContainerView
. #208 by @SD10.
-
MessageInputBar
now correctly sizes itself when breaking its max height or pasting in large amounts of text #173 by @nathantannar4. -
MessageInputBar
faced a rendering issue on subsequent presentations of aMessageViewController
. This was originally patched by adding a copy to the view duringviewDidAppear(animated:)
however that led to other issues #116. A correct patch has now been applied. #178 by @nathantannar4. -
Incorrect sizing of
MessagesCollectionView
s content inset by settingextendedLayoutIncludesOpaqueBars
to true by default. #204 by @SD10. -
scrollIndicatorInsets
to match the insets of theMessagesCollectionView
. #174 by @etoledom. -
MediaMessageCell
had an offsetPlayButtonView
that was being constrained to the cell and not the message container. #239 by @SirArkimedes.
-
Breaking Change
snapshotOptionsForLocation
method is now part ofLocationMessageDisplayDelegate
. #150 by @etoledom. -
Breaking Change
setMapSnapshotImage
now includes anannotationView: MKAnnotationView?
argument. #150 by @etoledom. -
Breaking Change
messageLabelInsets
has been made into a method onMessagesLayoutDelegate
. #162 by @SD10. -
Breaking Change
messageLabelInsets
now defaults to aleft
inset of 18 for incoming messages and aright
inset of 18 for outgoing messages. #162 by @SD10. -
Breaking Change
InputTextView
'sUITextViewDelegate
is now set toself
#173 by @nathantannar4. -
Breaking Change
MessagesDisplayDelegate
messageHeaderView(for:at:in)
andmessageFooterView(for:at:in)
to return non-optionals. #229 by @SD10. -
Breaking Change
MessagesCollectionView
dequeueMessageHeaderView(withIdentifier:for:)
&dequeueMessageFooterView(widthIdentifier:for:)
have been renamed todequeueReusableHeaderView(CollectionViewReusable.Type,for:)
&dequeueReusableFooterView(CollectionViewReusable.Type,for:)
. #229 by @SD10. -
configure
method of allMessageCollectionViewCell
types to be marked asopen
. #200 by @SD10. -
MessageHeaderView
,MessageFooterView
, andMessageDateHeaderView
initializers to bepublic
. #175 by @cwalo. -
UICollectionViewDataSource
andUICollectionViewDelegate
methods ofMessagesViewController
to beopen
. #177 by @cwalo.
-
Breaking Change
cellTopLabelInsets
andcellBottomLabelInsets
fromMessagesCollectionViewFlowLayout
. #166 by @SD10. -
Breaking Change
messageToViewEdgePadding
onMessagesCollectionViewFlowLayout
in favor ofmessagePadding(for:at:in)
. #208 by @SD10.
- Support for Swift 4
- Support for Swift 3.2 and Xcode 9
This release closes the 0.8 milestone.
- Breaking Change
MessageData
now supports.photo(UIImage)
,.location(CLLocation)
,.video(file: URL, thumbnail: UIImage)
cases. - Breaking Change
MessageCollectionViewCell
is now generic over itsContentView
constrained toUIView
. - Breaking Change
TextMessageCell
subclass ofMessageCollectionViewCell
to support text messages. MediaMessageCell
subclass ofMessageCollectionViewCell
to support photo/video messages.LocationMessageCell
subclass ofMessageCollectionViewCell
to support location messages.- Adds
LocationMessageLayoutDelegate
for sizing of location messages. - Adds
MediaMessageLayoutDelegate
for sizing of media messages. AvatarView
now supportsfontMinimumScaleFactor
,placeholderFontColor
, andplaceholderFont
properties
- Keyboard handling no longer adjusts the top & bottom insets for
MessagesCollectionView
. MessageStyle
s are now applied as amask
on theMessageContainerView
MessageCollectionViewCell
'smessageLabel
has been renamed tomessageContentView
AvatarView
'ssetBackground(color: UIColor)
method has been deprecated in favor ofbackgroundColor
AvatarView
'sgetImage()
method has been deprecated in favor of a newimage
property.
- Fixes extra height on text messages due to font specified in
MessagesCollectionViewFlowLayout
not being applied. AvatarView
's placeholder image is no longer constrained to a size of30 x 30
.AvatarView
's placeholder text can now auto-adjust based on available width.
- Fixes invalid image path for Carthage resources.
- Fixes missing asset bundle resources for Carthage installation.
- Fixes missing asset bundle resources in framework.
This release closes the 0.7 milestone
This release closes the 0.6 milestone.
This release closes the 0.5 milestone.
This release closes the 0.4 milestone.
This release closes the 0.3 milestone.
This release closes the 0.2 milestone.
This release closes the 0.1 milestone.
Initial release. 🎉