A community-driven replacement for JSQMessagesViewController

Overview

A community-driven replacement for JSQMessagesViewController https://messagekit.github.io

Tests Build framework Build example app Danger

codecov Swift CocoaPods Xcode Xcode MIT Contributions Welcome

Goals

  • Provide a 🚨 safe 🚨 environment for others to learn and grow through Open Source.
  • Make adding Chat πŸ’¬ to a project easy.
  • Enable beautiful and customizable Chat UI's.
  • Provide an awesome Open Source project for the iOS open source community.
  • Help others learn.

Vision

See VISION.md for Goals, Scope, & Technical Considerations.

Installation

CocoaPods Recommended

# Swift 5.3
pod 'MessageKit'

For Swift 5.0 use version 3.3.0

# Swift 5.0
pod 'MessageKit', '~> 3.3.0'

For Swift 4.2 use version 3.0.0

# Swift 4.2
pod 'MessageKit', '~> 3.0.0'

Swift Package Manager

Swift 5.3 in Xcode 12 added support for assets in Swift Packages. You can just add MessageKit package to your project by entering it's repository URL

https://github.com/MessageKit/MessageKit

Older versions of Swift and XCode don't support MessageKit via SPM.

Manual

Requirements

  • iOS 12 or later
  • Swift 5.3 or later

For iOS 11 please use version 3.3.0

For iOS 9 and iOS 10 please use version 3.1.1

Getting Started

Cell Structure

Each default cell is a subclass of MessageContentCell which has 7 parts. From top down we have a: cellTopLabel, messageTopLabel, messageContainerView, messageBottomLabel, cellBottomLabel with the avatarView and accessoryView on either side respectively. Above we see the basic TextMessageCell which uses a MessageLabel as its main content.

This structure will allow you to create a layout that suits your needs as you can customize the size, appearance and padding of each. If you need something more advanced you can implement a custom cell, which we show how to do in the Example project.

MessageInputBar Structure

The MessageInputBar, derived from InputBarAccessoryView is a flexible and robust way of creating any kind of input layout you wish. It is self-sizing which means as the user types it will grow to fill available space. It is centered around the middleContentView which by default holds the InputTextView. This is surrounded by InputStackView's that will also grow in high based on the needs of their subviews intrinsicContentSize. See the Example project for examples on how to tailor the layout for your own needs.

Guides

Please have a look at the Quick Start guide and the FAQs.

We recommend you start by looking at the Example project or write a question with the "messagekit" tag on Stack Overflow. You can also look at previous issues here on GitHub with the "Question" tag.

For more on how to use the MessageInputBar, see the dependency it is based on InputBarAccessoryView. You can also see this short guide

Default Cells

The type of cell rendered for a given message is based on the MessageKind

public enum MessageKind {
    case text(String) // TextMessageCell
    case attributedText(NSAttributedString) // TextMessageCell
    case photo(MediaItem) // MediaMessageCell
    case video(MediaItem) // MediaMessageCell
    case location(LocationItem) // LocationMessageCell
    case emoji(String) // TextMessageCell
    case audio(AudioItem) // AudioMessageCell
    case contact(ContactItem) // ContactMessageCell
    case linkPreview(LinkItem) // LinkPreviewMessageCell

    /// A custom message.
    /// - Note: Using this case requires that you implement the following methods and handle this case:
    ///   - MessagesDataSource: customCell(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> UICollectionViewCell
    ///   - MessagesLayoutDelegate: customCellSizeCalculator(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> CellSizeCalculator
    case custom(Any?)
}

If you choose to use the .custom kind you are responsible for all of the cells layout. Any UICollectionViewCell can be returned for custom cells which means any of the styling you provide from the MessageDisplayDelegate will not effect your custom cell. Even if you subclass your cell from MessageContentCell. Read more about custom cells

Read more about the cases on the Quick Start guide.

Contributing

Great! Look over these things first.

  • Please read our Code of Conduct
  • Check the Contributing Guide Lines.
  • Come join us on Slack and πŸ—£ don't be a stranger.
  • Check out the current issues and see if you can tackle any of those.
  • Download the project and check out the current code base. Suggest any improvements by opening a new issue.
  • Check out the What's Next section πŸ‘‡ to see where we are headed.
  • Check StackOverflow
  • Install SwiftLint to keep yourself in :neckbeard: style.
  • Be kind and helpful.

What's Next?

Check out the Releases to see what we are working on next.

Contact

Have a question or an issue about MessageKit? Create an issue!

Interested in contributing to MessageKit? Click here to join our Slack.

Apps using this library

Add your app to the list of apps using this library and make a pull request.

Please provide attribution, it is greatly appreciated.

Core Team

Thanks

Many thanks to the contributors of this project.

License

MessageKit is released under the MIT License.

Inspiration

Inspired by JSQMessagesViewController πŸ‘ˆ πŸ’―

Comments
  • Looking for Core Contributors for v1

    Looking for Core Contributors for v1

    Looking for Core Contributors for v1

    This is and always will be a community effort, but I think this project will require that I either write v1 myself or with a group of core contributors. The community can provide feedback, request features, and additional people can make contributions from there.

    Requirements:

    Conduct

    • [ ] Respectful of all members and their opinions
    • [ ] Capable of reviewing code and having your own code reviewed

    Must

    • [ ] Have the spare time to dedicate to this project
    • [ ] Be passionate about writing high-quality clean code
    • [ ] Be willing to write unit tests if need be
    • [ ] Be willing to communicate via Slack & Google Hangouts
    • [ ] Be able to start this weekend

    Preferably:

    • [ ] Interested in being a long term contributor (having knowledge of the evolution of the initial codebase is a huge plus in the long run)

    Please

    Only volunteer if you're serious about the project and can contribute a large amount of code for v1 rather quickly. Each and every contributor is welcome but this is a special task πŸ‘

    opened by SD10 41
  • How to hide the AvatarView with v1.0.0

    How to hide the AvatarView with v1.0.0

    I'm trying to hide the AvatarView with the new changes of 1.0.0-beta.1.

    Right now I use avatarView.isHidden = true in MessagesDisplayDelegate.configureAvatarView which only hides the view but will not remove the space of the AvatarView due to the size from outgoingAvatarSize or incomingAvatarSize of MessageSizeCalculator.

    Is it possible to change the value of outgoingAvatarSize or incomingAvatarSize?

    I couldn't find any delegate callback or entry point for a subclass.

    question stale 
    opened by janweinkauff 37
  • MessageInputBar UI problem when sending message or scrolling

    MessageInputBar UI problem when sending message or scrolling

    General Information

    • MessageKit Version: 0.13.1

    • iOS Version(s): iOS 11.2.2

    • Swift Version: Swift 4

    • Devices/Simulators: iPhone 7

    • Reproducible in ChatExample? (Yes/No): No

    What happened?

    When I add an image or text in input bar at the bottom and press send, the message input bar UI looks off. You only see a thin horizontal message input bar and then messages on either side of the bar. When you scroll, the message input bar is not sticking to the bottom, but rather a bit above the bottom edge and you can see message bubbles above and below message input bar. Please see the images to get a better idea of the problem. 
    

    img_1295 img_1296 img_1298

    What did you expect to happen?

    I expect the message input bar to stick to the bottom when I'm scrolling or sending messages (images or text) and not have message bubbles appear above and below the message input bar.

    bug? stale 
    opened by zoufishanmehdi 36
  • Typing Indicator Support

    Typing Indicator Support

    This PR adds TypingIndicator support by adding a new supplementary view rather than reserving the last section (as done in #776).

    The default typing indicator is an iMessage style typing bubble out of the box but you can also implement your own typing indicator cells!

    This implementation is still not complete but is in a functional state to compare against #776.

    The goal should be to determine which is a better way of adding this feature, reserving a section, through a supplementary view, or perhaps another method entirely.

    under review 
    opened by nathantannar4 35
  • Fixed boundingRect(with:options:) miscalculation of MessageLabel like text αŠΛ˜Μ΄ΝˆΜκˆŠΛ˜Μ΄ΝˆΜ€αŠβ‹†βœ©

    Fixed boundingRect(with:options:) miscalculation of MessageLabel like text αŠΛ˜Μ΄ΝˆΜκˆŠΛ˜Μ΄ΝˆΜ€αŠβ‹†βœ©

    Fixes #812 #816 . I think it's a bug for boundingRect(with:options:), it would calculates a less size when text like αŠΛ˜Μ΄ΝˆΜκˆŠΛ˜Μ΄ΝˆΜ€αŠβ‹†βœ© or Tomorrow is ....

    enhancement under review 
    opened by zhongwuzw 35
  • Rewriting JSQMessagesViewController

    Rewriting JSQMessagesViewController

    Hey everyone πŸ˜ƒ ,

    After 4 long years of hard work and dedication, Jesse Squires recently deprecated one of the most widely used open source iOS projects - JSQMessagesViewController. I believe this project's popularity is evidence enough that the iOS community should continue moving it forward.

    The current state of JSQMessageViewController is rock solid. It's been reiterated, battled tested over 4 years, and used by countless apps in production.

    It's safe to say that JSQMessagesViewController will continue to serve the needs of developers for a great time to come, but before the day comes where this is no longer the case -- I propose we have a plan for moving forward.

    My suggestions:

    • We rebrand the project as MessageKit.
    • The repository is hosted as an organization as opposed to under a personal account.

    I think these two points are important to building an inclusive community where every contributor feels a sense of ownership, importance, and welcome.

    • We port the project to Swift.

    While there's nothing wrong with Obj-C, I think this is a good opportunity to consider the future of iOS development and port the project to Swift. I believe a Swift codebase will encourage a greater number of contributors and bring fresh blood to the project.

    • We rally behind a centralized MessageViewController project for iOS.

    Open source projects require an enormous amount of effort to maintain. Instead of building competing MessagesViewController, we should all come together to deliver the highest quality project we can on behalf of the iOS community.

    Getting involved/other suggestions:

    I remember at the old MessageKit repo there were countless comments from people willing to contribute.

    I encourage everyone to share their thoughts and suggestions for the future of this project.

    Please discuss any issues/ideas/concerns below.

    discussion 
    opened by SD10 34
  • General layout issues

    General layout issues

    General Information

    • MessageKit Version: latest

    • iOS Version(s): 11

    • Swift Version: 3

    • Devices/Simulators: 8 sim

    • Reproducible in ChatExample? (Yes/No):

    What happened?

    I have several layout issues with the library, for example the chat window is hidden behind the message typing box, the view doesnt scroll to the bottom on load, opening the full keyboard doesnt life the chat view and obscures it.

    screen shot 2017-10-18 at 11 59 56 am screen shot 2017-10-18 at 12 02 28 pm screen shot 2017-10-18 at 12 02 55 pm

    What did you expect to happen?

    adapts correctly

    confirmed bug 
    opened by jackdem 30
  • MessageKit v1 Vision

    MessageKit v1 Vision

    I'll put together a Vision.md but for now here are some basic thoughts for v1.

    Basic Features

    • [x] Message Bubbles Incoming/Outgoing
    • [x] Message Avatars
    • [x] Basic Text Messages Support
    • [x] Resizing Messages Based on Text Length
    • [x] Input Bar With Send Button
    • [x] Move Input Bar When Showing Keyboard

    Other thoughts

    • Writing tests from the start is easier and provides more benefits than adding them later πŸ‘

    Feel free to discuss any thoughts on:

    • v1 features
    • API/Architecture
    • Anything you'd change from JSQMessagesViewController?

    Please use bullet points to make things easier to digest

    discussion 
    opened by SD10 28
  • [Need help] Adding a new cell type

    [Need help] Adding a new cell type

    I need a custom "notification" cell like this:

    custom-cell

    Some tips to help me working around in this idea?

    I'm thinking to create a new NotificationCell class that will be child of UICollectionViewCell and then create NotificationsSizeCalculator, NotificationsCollectionViewFlowLayout and NotificationsCollectionViewLayoutAttributes

    Is that a good approach?

    Are you interested in that kind of feature?

    Thank you in advance!

    question stale 
    opened by adri4silva 27
  • Group the messages according to date

    Group the messages according to date

    Great Library! : ) πŸ‘ I want to group messages according to the date. Just like we have in WhatsApp Today, Yesterday etc etc. This would be a great feature many like me would be looking for. Thank you.

    feature request 
    opened by ikyh 27
  • Message Collection View Constraints

    Message Collection View Constraints

    Describe the bug Messages will appear and disappear while still on screen behind the navigation bar.

    Looking at the code (in MessagesViewController), I see that both the messages collection view is using the safe area to pin its edges and that messagesCollectionView.contentInsetAdjustmentBehavior = .never is set - This is obviously deliberate, so I didn't want to open a pull request without first discussing it. However, because Apple has the functionality built in so that you can pin to the superview edges and the content inset will automatically adjust to accommodate the safe area insets, this flashy/glitchy appearing behavior can be eliminated.

    To Reproduce Steps/code to reproduce the behavior: This is easy enough to replicate in the example app just by commenting out the navigation bar styling in NavigationController and scrolling in the basic example.

    (note that it's significantly harder to see the issue in light mode, but it's definitely there):

        override func viewDidLoad() {
            super.viewDidLoad()
    //        navigationBar.isTranslucent = true
    //        navigationBar.tintColor = .white
    //        navigationBar.barTintColor = .primaryColor
    //        navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
    //        navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
    //        navigationBar.shadowImage = UIImage()
    //        navigationBar.setBackgroundImage(UIImage(), for: .default)
            view.backgroundColor = .primaryColor
        }
        
        func setAppearanceStyle(to style: UIStatusBarStyle) {
    //        if style == .default {
    //            navigationBar.shadowImage = UIImage()
    //            navigationBar.barTintColor = .primaryColor
    //            navigationBar.tintColor = .white
    //            navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
    //            navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
    //        } else if style == .lightContent {
    //            navigationBar.shadowImage = nil
    //            navigationBar.barTintColor = .white
    //            navigationBar.tintColor = UIColor(red: 0, green: 0.5, blue: 1, alpha: 1)
    //            navigationBar.titleTextAttributes = [.foregroundColor: UIColor.black]
    //            navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.black]
    //        }
        }
    

    Expected behavior The collection view content should scroll all the way OFF the edge of the screen prior to being dequeued and disappearing from the view hierarchy.

    Screenshots This is not the sample app, but it clearly demonstrates the issue.

    https://user-images.githubusercontent.com/6509485/106163892-16eeee00-614f-11eb-9251-53e94deaaaeb.mp4

    Environment

    • What version of MessageKit are you using? 3.5.0
    • What version of iOS are you running on? 14.2
    • What version of Swift are you running on? 5.3.2
    • What device(s) are you testing on? Are these simulators? Primarily tested and demonstrated on the simulator, but also ran on device (iPhone 8) and confirmed the issue is persistent.
    • Is the issue you're experiencing reproducible in the example app? yes - see above

    Additional context I am completely willing to open the PR to resolve this issue, but I'd like to confirm we are all on the same page prior to doing so. :)

    bug? 
    opened by mredig 26
  • Support for Cocoapods in case we have to use it?

    Support for Cocoapods in case we have to use it?

    Thank you for the wonderful library!

    I wonder why have we removed support for the Cocoapods? I know SPM is really good and I have been MessageKit through SPM ever since.

    Ever since Xcode 14 has arrived, I have trouble building the MessageKit with the Azure pipeline with following error:

    /Users/runner/Library/Developer/Xcode/DerivedData/<App>-hdgndojekdcpbqanrtalixkifyxd/SourcePackages/checkouts/MessageKit/Package.swift: error: MessageKit_MessageKit does not support provisioning profiles. MessageKit_MessageKit does not support provisioning profiles, but provisioning profile Adhoc has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor. (in target 'MessageKit_MessageKit' from project 'MessageKit')
    

    This seems a known issue. I tried to fix this issue but could not find how to fix this. (considering that I have to use manual signing).

    If we were still supporting the Cocoapods today, the MessageKit would be working just fine in case there are any such issues with SPM.

    waiting for response 
    opened by sunil-app 1
  • Support for UIEditMenuInteraction

    Support for UIEditMenuInteraction

    Hi, I would like to propose an improvement request regarding MessageKit.

    I would like to request support for UIEditMenuInteraction introduced in iOS16. UIMenuController has been deprecated.

    The menu display position is wrong on iOS16.

    Best regards.

    confirmed bug feature request 
    opened by pa-matsuda 0
  • InputBarAccessoryView goes up way too much on iPad using pagesheet

    InputBarAccessoryView goes up way too much on iPad using pagesheet

    I just updated to 4.0. My chats are shown in a pagesheet VC. When on iPad the input view doesn't stick properly to the keyboard. This iOS 16 screenshot explains it all:

    Simulator Screen Shot - iPad Air (5th generation) - 2022-10-04 at 11 31 23

    You can easily reproduce yourself by changing one simple line of code in the example app in LaunchViewController.swift:

      override func tableView(_: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = sections[indexPath.section].rows[indexPath.row]
        switch cell {
        case .basic:
          let viewController = BasicExampleViewController()
          let detailViewController = UINavigationController(rootViewController: viewController)
          //splitViewController?.showDetailViewController(detailViewController, sender: self)
          present(detailViewController, animated: true)
    

    So use present() instead of showDetailViewController (). Then just open the basic example on iPad and tap on the input field to show the keyboard.

    I'm not sure this is a problem with MessageKit or InputBarAccessoryView though.

    I see the same issue occur on iOS 14.1 simulator, but not as dramatic.

    bug? 
    opened by Janneman84 6
  • MessageInputBar hides and reappears slowly when QLPreviewController is dismissed using the Interactive gesture.

    MessageInputBar hides and reappears slowly when QLPreviewController is dismissed using the Interactive gesture.

    Describe the bug When QLPreviewController is dismissed using the swipe gesture, MessageInputBar hides and reappears slowly.

    To Reproduce

    1. Tap on the keyboard
    2. Present a photo using QLPreviewController ( modalPresentationStyle = .fullScreen )
    3. dismiss QLPreviewController by swipe gesture
    func presentQLPreviewController() {
        let controller = QLPreviewController()
        controller.modalPresentationStyle = .fullScreen
        controller.dataSource = self
        self.present(controller, animated: true)
    }
    

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots

    174591520-66eafc58-dc46-404f-9cae-2a743d4db6fc

    Environment

    • What version of MessageKit are you using? - 6.1.0
    • What version of iOS are you running on? - iOS 15.5
    • What version of Swift are you running on? - - Swift 5
    • What device(s) are you testing on? Are these simulators? - iPhone / iPad
    • Is the issue you're experiencing reproducible in the example app? - Yes

    Additional context Add any other context about the problem here.

    bug? 
    opened by Zulqarnayn 0
  • Add padding between Message text and bubble

    Add padding between Message text and bubble

    Hi first of thanks for library, I'm trying to achieve padding between attributed text and cell bubble. i have tried searched all issues with key word padding but couldn’t find way to achieve that. since it is very simple problem that's why i don't want to use custom cell.

    IMG_49D28DC5B135-1

    waiting for response 
    opened by maasim94 1
  • MessageLabel cuts off text

    MessageLabel cuts off text

    First of all thank you for the great library. I found the issue when MessageLabel cuts off text. I also prepared you test project where you can easy to reproduce it. In the example I use the same method for calculation label size that we have in MessageSizeCalculator.labelSize

    I found that this issue is cased by this line

    mutableText.addAttribute(.paragraphStyle, value: style, range: range)
    

    inside MessageLabel.swift file

    To Reproduce Just run test project you will see that the text is cutting off in contrast of regular UILabel

    Expected behavior Whole text should be visible

    Screenshots https://www.screencast.com/t/6ECllmkScpC

    Environment

    • What version of MessageKit are you using? I use main branch (6.1.0)
    • What version of iOS are you running on? iOS 14.7.1, iOS 15.2
    • What version of Swift are you running on? xCode 13.2.1, swift 5
    • What device(s) are you testing on? Are these simulators? It's possible to reproduce this issue on simulator and real devices 15.2(any simulator), 15.2 (iPhone 11) 14.7.1 (iPhone 6s)
    • Is the issue you're experiencing reproducible in the example app? Yes, please use my project https://github.com/Pro2005/MessageKitIssue to understand the problem

    Please help me to find correct solution because you know project better.

    bug? 
    opened by Pro2005 0
Releases(4.1.1)
  • 4.1.1(Oct 12, 2022)

  • 4.1.0(Oct 12, 2022)

  • 4.0.0(Jul 24, 2022)

    iOS 12 has been around for a while, but with upcoming release of iOS 16, we are ready to let this version go and rest in peace forever. The same could be said about CocoaPods - what used to be the major and most important thing on iOS for developing apps with 3rd party libraries - has been replaced by natively supported way called Swift Package Manager.

    Sit tibi terra levis.


    Version 4.0.0 comes with couple of breaking changes, please refer to the MIGRATION_GUIDE.md for easy transition from V3 to V4.

    Added

    • New method in MessagesLayoutDelegate for setting message avatar size ddfc814 by @martinpucik
    • MessageInputBarKind enum for customizing messageInputBar inside inputContainerView #1707 by @martinpucik

    Changed

    • Breaking change: Dropped CocoaPods support
    • Breaking change: Dropped support for iOS 12 2bd234b by @martinpucik
    • Breaking change: Moved messageInputBar from inputAccessoryView to a subview in MessagesViewController #1704 by @martinpucik
    • Breaking change: Renamed func currentSender() -> SenderType to var currentSender: SenderType #1714 by @martinpucik
    • Deprecation: Deprecated maintainPositionOnKeyboardFrameChangedMoved in favor of maintainPositionOnInputBarHeightChanged which better describes the intended use of this property #1704 by @martinpucik
    • Breaking change: Added an argument to messageContainerMaxWidth cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType) -> CGFloat
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat
      
    • Breaking change: Added an argument to messageContainerSize cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerSize(for message: MessageType) -> CGSize
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize
      
    • Updated InputBarAccessoryView to v6.1.0 #1716 by @martinpucik
    • Observe inputBar frame change to update collectionView bottom inset instead of keyboard show/hide notifications #1726 by @martinpucik

    Fixed

    • Fixed iOS 13 deprecation warnings #1715 by @kaspik
    • Updating bottom chat collectionView inset after InputBar container view frame change #1725 by @martinpucik

    Removed

    • NSConstraintLayoutSet.swift #1700 by @martinpucik
    • Deprecated Sender struct. Clients should use SenderType protocol #1713 by @martinpucik
    • Unavailable MessageInputBar and MessageInputBarDelegate. Clients should use InputBarAccessoryView and InputBarAccessoryViewDelegate #1713 by @martinpucik
    • func scrollToBottom(animated:) on MessagesCollectionView. Clients should use func scrollToLastItem(:) #1713 by @martinpucik
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0-beta.4(Jul 22, 2022)

    4.0.0 Beta 4

    • Update chat bottom inset after input bar size change by @martinpucik in https://github.com/MessageKit/MessageKit/pull/1725
    • Observe inputBar frame change to update collectionView bottom inset by @martinpucik in https://github.com/MessageKit/MessageKit/pull/1726

    4.0.0 Beta 2

    4.0.0 Beta 1

    iOS 12 has been around for a while, but with upcoming WWDC, we are ready to let this version go and rest in peace forever. The same could be said about CocoaPods - what used to be the major and most important thing on iOS for developing apps with 3rd party libraries - has been replaced by natively supported way called Swift Package Manager.

    Sit tibi terra levis.


    See MIGRATION_GUIDE.md for migration to the new V4.

    Changed

    • Breaking change: Dropped CocoaPods support
    • Breaking change: Dropped support for iOS 12 2bd234b by @martinpucik
    • Breaking change: Moved messageInputBar from inputAccessoryView to a subview in MessagesViewController #1704 by @martinpucik
    • Deprecation: Deprecated maintainPositionOnKeyboardFrameChangedMoved in favor of maintainPositionOnInputBarHeightChanged which better describes the intended use of this property #1704 by @martinpucik
    • Breaking change: Added an argument to messageContainerMaxWidth cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType) -> CGFloat
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat
      
    • Breaking change: Added an argument to messageContainerSize cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerSize(for message: MessageType) -> CGSize
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize
      

    Fixed

    Added

    • New method in MessagesLayoutDelegate for setting message avatar size ddfc814 by @martinpucik
    • MessageInputBarKind enum for customizing messageInputBar inside inputContainerView #1707 by @martinpucik

    Removed

    Source code(tar.gz)
    Source code(zip)
  • 4.0.0-beta.2(May 16, 2022)

    4.0.0 Beta 2

    4.0.0 Beta 1

    iOS 12 has been around for a while, but with upcoming WWDC, we are ready to let this version go and rest in peace forever. The same could be said about CocoaPods - what used to be the major and most important thing on iOS for developing apps with 3rd party libraries - has been replaced by natively supported way called Swift Package Manager.

    Sit tibi terra levis.


    See MIGRATION_GUIDE.md for migration to the new V4.

    Changed

    • Breaking change: Dropped CocoaPods support
    • Breaking change: Dropped support for iOS 12 2bd234b by @martinpucik
    • Breaking change: Moved messageInputBar from inputAccessoryView to a subview in MessagesViewController #1704 by @martinpucik
    • Deprecation: Deprecated maintainPositionOnKeyboardFrameChangedMoved in favor of maintainPositionOnInputBarHeightChanged which better describes the intended use of this property #1704 by @martinpucik
    • Breaking change: Added an argument to messageContainerMaxWidth cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType) -> CGFloat
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat
      
    • Breaking change: Added an argument to messageContainerSize cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerSize(for message: MessageType) -> CGSize
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize
      

    Fixed

    Added

    • New method in MessagesLayoutDelegate for setting message avatar size ddfc814 by @martinpucik
    • MessageInputBarKind enum for customizing messageInputBar inside inputContainerView #1707 by @martinpucik

    Removed

    Source code(tar.gz)
    Source code(zip)
  • 4.0.0-beta.1(May 9, 2022)

    iOS 12 has been around for a while, but with upcoming WWDC, we are ready to let this version go and rest in peace forever. The same could be said about CocoaPods - what used to be the major and most important thing on iOS for developing apps with 3rd party libraries - has been replaced by natively supported way called Swift Package Manager.

    Sit tibi terra levis.


    See MIGRATION_GUIDE.md for migration to the new V4.

    Changed

    • Breaking change: Dropped CocoaPods support
    • Breaking change: Dropped support for iOS 12 2bd234b by @martinpucik
    • Breaking change: Moved messageInputBar from inputAccessoryView to a subview in MessagesViewController #1704 by @martinpucik
    • Deprecation: Deprecated maintainPositionOnKeyboardFrameChangedMoved in favor of maintainPositionOnInputBarHeightChanged which better describes the intended use of this property #1704 by @martinpucik
    • Breaking change: Added an argument to messageContainerMaxWidth cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType) -> CGFloat
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerMaxWidth(for message: MessageType, at indexPath: IndexPath) -> CGFloat
      
    • Breaking change: Added an argument to messageContainerSize cd4f75b by @martinpucik
      MessageSizeCalculator.messageContainerSize(for message: MessageType) -> CGSize
      

      now has IndexPath argument

      MessageSizeCalculator.messageContainerSize(for message: MessageType, at indexPath: IndexPath) -> CGSize
      

    Fixed

    Added

    • New method in MessagesLayoutDelegate for setting message avatar size ddfc814 by @martinpucik
    • MessageInputBarKind enum for customizing messageInputBar inside inputContainerView #1707 by @martinpucik

    Removed

    Source code(tar.gz)
    Source code(zip)
  • 3.8.0(Apr 28, 2022)

  • 3.7.0(Sep 10, 2021)

    Fixed

    • Updated InputBarAccessoryView to 5.4.0 with XCode 13 support
    • Fixed Example project loading MessageKit through SPM
    • Make sure MessageKit works on XCode 13 correctly
    Source code(tar.gz)
    Source code(zip)
  • 3.6.1(May 10, 2021)

    Added

    • Added enough data source and delegate methods to display customized UICollectionViewCell for MessageTypes other than .custom in #1577
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(May 10, 2021)

  • 3.6.0(Mar 30, 2021)

    Fixed

    • Fixes an issue with Scroll problem on new messages with keyboard open #1529 by @politan8

    • Fixes time stamp vertical alignment so labels align with messages when showMessageTimestampOnSwipeLeft is true. by @kurtsequoia

    • Breaking Change Changed MessagesLayoutDelegate's method for typing indicator size. Typing indicator's size is now correctly calculated based on delegate method func typingIndicatorViewSize(for layout: MessagesCollectionViewFlowLayout) -> CGSize #1563 by @kaspik

    Changed

    • Changed resource_bundle back to resources in MessageKit.podspec #1565 by @kaspik
    Source code(tar.gz)
    Source code(zip)
  • 3.5.1(Mar 8, 2021)

  • 3.5.0(Jan 13, 2021)

    Fixed

    • maintainPositionOnKeyboardFrameChanged for small contentSize would scroll content out of bounds #1506 by @martinpucik

    Changed

    • Changed resources to resource_bundle in MessageKit.podspec #1460 by @martinpucik
    • Changed dependency manager for Example project to SPM #1504 by @martinpucik
    • Deprecated messagesCollectionView.scrollToBottom and scrollsToBottomOnKeyboardBeginsEditing in favor of messagesCollectionView.scrollToLastItem and scrollsToLastItemOnKeyboardBeginsEditing. This will be removed in a future release #1505 by @martinpucik

    Breaking change: Apparently 3.5.0 removed supported for Carthage as we no longer have .xcodeproj. It seems to be no issue for most of you as SPM is fully working native replacement in XCode 12+. Let us know if there is any blocker, we might consider bringing it back, but we hope we can move forward with much more simple setup.

    Source code(tar.gz)
    Source code(zip)
  • 3.4.2(Oct 5, 2020)

  • 3.4.1(Sep 16, 2020)

  • 3.4.0(Sep 16, 2020)

  • 3.3.0(Sep 4, 2020)

  • 3.2.0(Aug 26, 2020)

    Fixed

    • Fixes an incorrect animation of message cells while dragging to dismiss the keyboard #1433 by @lhr000lhrmega
    • Fixes an issue where the video message playback icon was too dark when in dark mode #1386 by @kinoroy
    • Fixes an issue where the video message playback button triangle was not centered within the circle #1386 by @kinoroy

    Added

    • Added option to use Photo messages with remote image URL in Example project #1294 by @martinpucik
    • Breaking Change Added new linkPreview message type, which display a subclass of TextMessageCell with support to present title, teaser and a thumbnail image for a link #1310 by @bguidolim
    • Added a SwiftUI view using MessageKit in the Example Project by #1410 @kinoroy

    Changed

    • Breaking Change Dropped support for iOS 9 and iOS 10 #1261 by @kaspik
    • Converted internal, static colors into color assets to better support dark and high contrast modes #1386 by @kinoroy
    • Change the video message playback button to use a UIVisualEffectsView to better match the look and feel of iMessage. #1386 by @kinoroy
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Mar 17, 2020)

  • 3.1.0-beta.1(Feb 25, 2020)

    3.1.0 Beta 1

    Fixed

    • Set the proper notification to invalidate layout. MessageKit now relies on UIApplication orientation notification instead of UIDevice, which invalidates the layout only when it is needed. #1126 by @bguidolim

    • Fixed requiredInitialScrollViewBottomInset when inputAccessoryView is nil #1218 by @aabosh

    Added

    • Add missing textAlignment and textInsets assignments to layoutCellTopLabel method in MessageContentCell. #1117 by @mdescalzo

    • Add support for styling NSLinkAttribute with existing urlAttributes in MessageLabel. #1091 by @marcetcheverry

    • Add loading indicator to AudioMessageCell. #1084 by @marcetcheverry

    • Lazily initialize the MessageInputBar on MessagesViewController. #1092 by @marcetcheverry

    • Add support for Dark Mode #1189 by @Vlada31R

    • Add support for scrollToLastItem and scrollsToLastItemOnKeyboardBeginsEditing #1247 by @youuu

    Changed

    • Breaking Change Updated to Swift 5.0 #1039 by @nathantannar4

    • Fixes scrollToBottom method to properly handle calls made early in the view lifecycle. #1110 by @marcetcheverry

    • Add missing cellTopLabelAlignment to MessageSizeCalculator. #1113 by @marcetcheverry

    • Breaking Change MessageInputBar, and MessageInputBarDelegate have been obsoleted. UseInputBarAccessoryView and InputBarAccessoryViewDelegate respectively. This change was previously meant for 3.0.0 but was implemented erroneously. #1201 by @kinoroy

    • Deprecated SenderType.id in favour of SenderType.senderId. This change was previously meant for 3.0.0 but was implemented erroneously. #1201 by @kinoroy

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(May 1, 2019)

  • 3.0.0-beta-swift4-2(Apr 6, 2019)

    3.0.0

    Dependency Changes

    • Breaking Change The dependency MessageInputBar was replaced with InputBarAccessoryView. As MessageInputBar was previously a fork this means no functionality has been lost but improvements and bug fixes will be present. InputBarAccessoryView has more of a following outside of MessageKit making its development faster than MessageInputBar. Maintaining two versions only increased the workload. You can find the changelog for InputBarAccessoryView here.

    Changed

    • Breaking Change Deprecated the Sender struct in favor of the SenderType protocol. #909 by @nathantannar4

    • Breaking Change Add support for audio messages. Added new protocols AudioControllerDelegate, AudioItem a new cell AudioMessageCell and a new controller BasicAudioController. #892 by @moldovaniosif.

    • Breaking Change Moved handleTapGesture method to MessageCollectionViewCell #950 by @nathantannar4

    • Breaking Change Renamed function layoutBottomLabel(with:) to layoutMessageBottomLabel(with:) in MessageContentCell class. #920 by @maxxx777

    Added

    • Breaking Change Add support for share contact. #1013 by @moldovaniosif

    • Added typing indicator support, func setTypingIndicatorViewHidden(_ isHidden: Bool, animated: Bool, whilePerforming updates: (() -> Void)? = nil, completion: ((Bool) -> Void)? = nil). Return a custom typing view by conforming to MessagesDisplayDelegate or use the default appearance. Customize the size with MessagesLayoutDelegate . #989 by @nathantannar4

    • Added AccessoryPosition class. #989 by @subdiox

    • Added incomingAccessoryViewPosition and outgoingAccessoryViewPosition variables to MessageSizeCalculator class. #989 by @subdiox

    • Added setMessageIncomingAccessoryViewPosition(_:) and setMessageOutgoingAccessoryViewPosition(_:) functions to MessagesCollectionViewFlowLayout class. #989 by @subdiox

    • Breaking Change Added avatarLeadingTrailingPadding as a property of CellSizeCalculator and MessagesCollectionViewLayoutAttributes to inset the AvatarView layout #944 by @nathantannar4

    • Breaking Change Added didTapBackground(in:) function to MessageCellDelegate protocol. #922 by @kpennacchia

    • Breaking Change Added didTapCellBottomLabel(in:) function to MessageCellDelegate protocol. #920 by @maxxx777

    • Breaking Change Added cellBottomLabelAttributedText(for:, at:) function to MessagesDataSource protocol. #920 by @maxxx777

    • Breaking Change Added cellBottomLabelHeight(for:, at:, in messagesCollectionView:) function to MessagesLayoutDelegate protocol. #920 by @maxxx777

    • Added cellBottomLabel to MessageContentCell. #920 by @maxxx777

    • Added layoutCellBottomLabel(with:) function to MessageContentCell class. #920 by @maxxx777

    • Added setMessageIncomingCellBottomLabelAlignment(_:) and setMessageOutgoingCellBottomLabelAlignment(_:) functions to MessagesCollectionViewFlowLayout class. #920 by @maxxx777

    • Added cellBottomLabelAlignment and cellBottomLabelSize variables to MessagesCollectionViewLayoutAttributes class. #920 by @maxxx777

    • Added incomingCellBottomLabelAlignment and outgoingCellBottomLabelAlignment variables to MessageSizeCalculator class. #920 by @maxxx777

    • Added cellBottomLabelSize(for:, at:) and cellBottomLabelAlignment(for:) functions to MessageSizeCalculator class. #920 by @maxxx777

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0-beta.1(Oct 14, 2018)

    Changed

    • Fixed the way that the Strings and UIImages are parsed in the InputTextView to prevent crashes in parseForComponents(). #791 by @nathantannar4

    • Breaking Change Updated codebase to Swift 4.2 #883 by @nathantannar4

    Added

    • Added support for detection and handling of NSLinks inside of messages. #815 by @jnic

    • Added customizable accessoryView, with a new MessagesDisplayDelegate function configureAccessoryView, and corresponding size & padding properties in MessageSizeCalculator. The accessoryView is aligned to the center of the messageContainerView. #710 by @hyouuu

    • Added a tap gesture recognition to the accessoryView which calls the MessageCellDelagate function didTapAccessoryView(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

    Fixed

    • Fixed a bug that prevented MessageLabel from laying out properly when contained by superviews using autolayout. #889 by @marius-serban.

    • Breaking Change Fixed typo of scrollsToBottomOnKeybordBeginsEditing to scrollsToBottomOnKeyboardBeginsEditing. #856 by @p-petrenko

    • 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 the messageLabelFont size by default. #795 by @Vortec4800.

    • Fixed MessagesCollectionView to allow to use nibs with MessageReusableView. #832 by @maxxx777.

    • Fixed multiple crashes at views, when views are being called from another XIB. #905 by @talanov.

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jun 27, 2018)

    This is the first non-prerelease version of MessageKit. This means, while there will still be API breaking changes as the project evolves, we have a generally agreed upon core API. Thanks again to all the contributors that make this project possible πŸ’― πŸ₯‡

    Special thanks to the core team members @zhongwuzw @nathantannar4 and @cwalo. For those interested in the roadmap/feature candidates for the next major version, please check out the 2.0.0 milestone.

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-beta.2(Jun 15, 2018)

    This version brings a few bug fixes thanks to all our beta testers 😎. This should be the last beta release for MessageKit. Once again thank you to all the people contributing to this project πŸ’― πŸŽ‰

    Changed

    • Relaxed the settable requirement for the LocationItem and MediaItem protocols. #727 by @SD10.

    Fixed

    • Fixed MessageContentCell's subviews frame when size equal to .zero. #716 by @zhongwuzw.

    • Fixed MessagesCollectionView's bottom inset when hardware keyboard is connected. Do not adjust MessagesCollection's inset when being popped. #707 by @zhongwuzw.

    • Fixed LabelAlignment initializer which has default internal access control. #705 by @zhongwuzw.

    Added

    • Added convenience method to set properties for all MessageSizeCalculators. #697 by @zhongwuzw.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-beta.1(May 3, 2018)

    πŸŽ‰ This version brings a huge number of API breaking changes necessary for performance and the longevity of this project. This also sets a baseline for stable MessageKit API.

    Below we've included a changelog and we've tried our best to fully document all API changes. If you're having trouble migrating from an earlier version of MessageKit, please open a GitHub issue and we'll do our best to point you in the right direction.

    This release would not have been possible without the help of @zhongwuzw πŸ™‡ πŸ™‡ πŸ™‡. He contributed a large number of bug fixes and performance improvements to get MessageKit to where it is today. I'd like to also thank the other core team members @nathantannar4 and @cwalo for their continued support. And of course thanks to the rest of the MessageKit contributors making this project possible πŸ’―

    Added

    • Breaking Change Added new MessagesDataSource delegate methods, numberOfSections(in) and numberOfItems(inSection:in). #601 by @SD10, @zhongwuzw.

    • Breaking Change Added new protocol MediaItem as the associated value for the MessageData.video and MessageData.photo cases. #587 by @SD10.

    • Breaking Change Added new protocol LocationItem as the associated value for the MessageData.location case. #587 by @SD10.

    • Breaking Change Added new DetectorType called .transitInformation to message label. #520 by @nosarj.

    • Breaking Change Added .custom(Any?) case to MessageData. #498 by @SD10.

    • Breaking Change Added .messageLabelTop case to AvatarPosition.Vertical enum. #596 by @zhongwuzw

    • Added CellSizeCalculator protocol that is responsible for sizing and configuring attributes of a MessageCollectionViewCell. #579 by @SD10.

    • Added MessageSizeCalculator, MediaMessageSizeCalculator, TextMessageSizeCalculator, and LocationMessageSizeCalculator classes that are responsible for sizing the MessagesCollectionViewCell types provided by MessageKit. #579 by @SD10.

    • Added three new methods cellTopLabelHeight(for:at:in), messageTopLabelHeight(for:at:in), and messageBottomLabelHeight(for:at:in) to MessagesLayoutDelegate. #580 by @SD10.

    • Added new class InsetLabel. #580 by @SD10.

    • Added new method configureMediaMessageImageView(_:for:at:in) to configure the UIImageView of a MediaMessageCell asynchronously. #592 by @zhongwuzw, @SD10

    • Added new MessageContentCell class and MessageReusableView class. #596 by @SD10.

    Changed

    • Breaking Change Renamed MessageData enum to MessageKind and changed MessageType's data property name to kind. #658 by @zhongwuzw.

    • Breaking Change Changed the messageFooterView(for:in) and messageHeaderView(for:in) methods of MessagesDisplayDelegate by removing the message parameter. #615 by @SD10.

    • Breaking Change Changed the footerViewSize(for:in) and headerViewSize(for:in) methods of MessagesLayoutDelegate by removing the MessageType and IndexPath parameters and replacing them with a new section: Int parameter. #615 by @SD10.

    • Breaking Change The reuse identifiers of all MessageReusableViews and MessageCollectionViewCells have been changed to match their class name exactly. #615 by @SD10.

    • Breaking Change MessageHeaderView and MessageFooterView now subclass MessageReusableView class. #596 by @SD10.

    • Breaking Change Renamed MessageCollectionViewCell to MessageContentCell. The MessageCollectionViewCell class is now a bare bones subclass. #596 by @SD10.

    • Breaking Change Changed LabelAlignment to be a struct with properties of textAlignment: NSTextAlignment and textInsets: UIEdgeInsets to position the text in the cellTopLabel and cellBottomLabel. #580 by @SD10.

    • Breaking Change The type of cellTopLabel and cellBottomLabel has been changed to InsetLabel. #580 by @SD10.

    • Breaking Change Renamed cellTopLabel to messageTopLabel and renamed cellBottomLabel to messageBottomLabel. #659 by @SD10.

    • Breaking Change Renamed the didTapTopLabel and didTapBottomLabel methods of MessageCellDelegate to didTapMessageTopLabel and didTapMessageBottomLabel. #659 by @SD10.

    • Breaking Change Renamed cellBottomLabelAttributedText method of MessagesDataSource to messageBottomLabelAttributedText. #659 by @zhongwuzw.

    • The MessageData.emoji case no longer uses a default font of 2x the messageLabelFont size. You must now set this font explicitly through the emojiMessageSizeCalculator on MessagesCollectionViewFlowLayout. #530 by @SD10.

    • Changed the contentMode of the UIImageView for MediaMessageCell to be .scaleAspectFill. #587 by @SD10.

    • The result of the MessagesDisplayDelegate method textColor(for message:...) no longer applies to .attributedText case of MessageData. #625 by @cwalo.

    • Removed the explicit height constraint from the separatorLine in MessageInputBar. #667 by @zhongwuzw

    Removed

    • Breaking Change Removed NSLayoutConstraintSet by changing access control from public to internal. #607 by @zhongwuzw.

    • Breaking Change Removed the showsDateHeaderAfterTimeInterval property of MessagesCollectionView. #615 by @SD10.

    • Breaking Change Removed the reuseIdentifer method from MessageCollectionViewCell, TextMessageCell, LocationMessageCell, MediaMessageCell, and MessageContentCell. #615 by @SD10.

    • Breaking Change Removed the CollectionViewReusable protocol. #615 by @SD10.

    • Breaking Change Removed MessageHeaderView and MessageFooterView in favor of MessageReusableView. #615 by @SD10.

    • Breaking Change Removed numberOfMessages(in) method of MessagesDataSource, instead please use numberOfSections(in) and numberOfItems(inSection:in). #601 by @SD10, @zhongwuzw.

    • Breaking Change Removed the messageLabelFont property from MessagesCollectionViewFlowLayout. You can now set this property through textMessageSizeCalculator property. #579 by @SD10.

    • Breaking Change Removed MessageDateHeaderView class in favor of using cellTopLabel. #659 by @zhongwuzw.

    Fixed

    Source code(tar.gz)
    Source code(zip)
Owner
MessageKit
A community-driven replacement for JSQMessagesViewController
MessageKit
A community-driven replacement for JSQMessagesViewController

A community-driven replacement for JSQMessagesViewController https://messagekit.github.io Goals Provide a ?? safe ?? environment for others to learn a

MessageKit 5.4k Jan 2, 2023
AuroraEditor is a IDE built by the community, for the community, and written in Swift for the best native performance and feel for macOS.

AuroraEditor AuroraEditor is a IDE built by the community, for the community, and written in Swift for the best native performance and feel for macOS.

Aurora Editor 704 Jan 8, 2023
A replacement for as which runs in constant time instead of O(n) when the conformance is not satisfiedA replacement for as which runs in constant time instead of O(n) when the conformance is not satisfied

ZConform A replacement for as? which runs in constant time instead of O(n) when the conformance is not satisfied. How it works ZConform does a one-tim

Emerge Tools 20 Aug 4, 2022
Spin aims to provide a versatile Feedback Loop implementation working with the three main reactive frameworks available in the Swift community (RxSwift, ReactiveSwift and Combine)

With the introduction of Combine and SwiftUI, we will face some transition periods in our code base. Our applications will use both Combine and a thir

Spinners 119 Dec 29, 2022
swiftUIviews is an online collection of beautifly designed swiftUIViews by the swift community

swiftUIViews | ?? swiftUIviews is an online collection of beautifly designed swiftUIViews by the swift community. Feelin like contributing? Follow the

emin 28 Aug 18, 2022
Redux abstractions for BetterMe projects and iOS community

ReduxCore Redux abstractions on Swift for BetterMe projects and iOS community Installation CocoaPods You can install ReduxCore via CocoaPods by adding

BetterMe 15 Mar 24, 2022
Meet Genius - A community where geniuses meet

Yep A community where geniuses meet https://soyep.com Yep: Project Introductory Guide Please build with the latest CocoaPods v0.39.0 and Xcode 7.2. In

Catch 5.9k Dec 24, 2022
An online community of professional chefs, home cooks, and food lovers worldwide

Yoke is an online community of professional chefs, home cooks, and food lovers worldwide. Whether you are looking for an expert or a home chef, a fanc

Laura Jelenich 3 Dec 8, 2021
Tech-Career-Growth-iOS - Official iOS app for the Tech Career Growth community

Developing the app Open the project from TCG.xcworkspace, not TCG.xcodeproj. It

Alexander Chiou 10 Feb 10, 2022
WWDCScholars is a community of Apple WWDC Scholarship winners

WWDCScholars iOS App WWDCScholars is a community of Apple WWDC Scholarship winners. Every year bright minds from all around the world compete against

WWDCScholars 65 Dec 7, 2022
XCSnippetsApp - macOS application to explore code snippets from the Swift and iOS community, view and edit the snippets before adding them conveniently to Xcode

XCSnippetsApp macOS application to explore code snippets from the Swift and iOS community, view and edit the snippets before adding them conveniently

Marco Eidinger 119 Dec 27, 2022
A dependency manager driven by SwiftPM that works for iOS/tvOS/watchOS/macOS projects.

Installation β€’ Usage β€’ Supporting Accio β€’ Contributing β€’ License ⚠️ Deprecation Notice ⚠️ With the release of Xcode 12 which includes Swift 5.3, we fe

Jamit Labs 647 Dec 25, 2022
Ease is an event driven animation system that combines the observer pattern with custom spring animations as observers

Ease is an event driven animation system that combines the observer pattern with custom spring animations as observers. It's magic. Features Animate a

Robert-Hein Hooijmans 1.3k Nov 17, 2022
Swift interpolation for gesture-driven animations

Interpolate Interpolate is a powerful Swift interpolation framework for creating interactive gesture-driven animations. Usage The ?? idea of Interpola

Roy Marmelstein 1.8k Dec 20, 2022
Graph is a semantic database that is used to create data-driven applications.

Welcome to Graph Graph is a semantic database that is used to create data-driven applications. Download the latest sample. Features iCloud Support Mul

Cosmicmind 875 Oct 5, 2022
πŸ”Œ Non-blocking TCP socket layer, with event-driven server and client.

Original authors Honza Dvorsky - http://honzadvorsky.com, @czechboy0 Matthias Kreileder - @matthiaskr1 At the request of the original authors, we ask

Vapor Community 574 Dec 7, 2022
UIPheonix is a super easy, flexible, dynamic and highly scalable UI framework + concept for building reusable component/control-driven apps for macOS, iOS and tvOS

UIPheonix is a super easy, flexible, dynamic and highly scalable UI framework + concept for building reusable component/control-driven apps for macOS, iOS and tvOS

Mohsan Khan 29 Sep 9, 2022
A simple Pokedex app written in Swift that implements the PokeAPI, using Combine and data driven UI.

SwiftPokedex SwiftPokedex is a simple Pokedex app written by Viktor GidlΓΆf in Swift that implements the PokeAPI. For full documentation and implementa

Viktor G 26 Dec 14, 2022
MQTTNIO - Non-blocking, event-driven Swift client for MQTT build on SwiftNIO

This library has support for WebSocket connections and TLS. It runs on all platforms Swift NIO runs on (e.g. macOS, iOS, Linux, etc.).

Steven Roebert 41 Dec 23, 2022
An open-source Swift framework for building event-driven, zero-config Multipeer Connectivity apps

PeerKit An open-source Swift framework for building event-driven, zero-config Multipeer Connectivity apps Usage // Automatically detect and attach to

JP Simard 861 Dec 23, 2022