diff --git a/MessageKit.xcodeproj/project.pbxproj b/MessageKit.xcodeproj/project.pbxproj index cfaac857..fc125472 100644 --- a/MessageKit.xcodeproj/project.pbxproj +++ b/MessageKit.xcodeproj/project.pbxproj @@ -53,6 +53,7 @@ 50FF34572237FE6A0004DCD7 /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50FF34562237FE6A0004DCD7 /* UIImage+Extension.swift */; }; 50FF34592237FE850004DCD7 /* ContactMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50FF34582237FE840004DCD7 /* ContactMessageCell.swift */; }; 50FF345B2237FE9C0004DCD7 /* ContactMessageSizeCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50FF345A2237FE9C0004DCD7 /* ContactMessageSizeCalculator.swift */; }; + 797AD26423422BDB00E63579 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 797AD26323422BDB00E63579 /* UIColor.swift */; }; 88916B2D1CF0DF2F00469F91 /* MessageKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88916B221CF0DF2F00469F91 /* MessageKit.framework */; }; 8962AC8A1F87AB7D0030B058 /* MessagesCollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8962AC831F87AB230030B058 /* MessagesCollectionViewTests.swift */; }; 8962AC8C1F87AB7D0030B058 /* AvatarViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8962AC851F87AB230030B058 /* AvatarViewTests.swift */; }; @@ -166,6 +167,7 @@ 50FF34562237FE6A0004DCD7 /* UIImage+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = ""; }; 50FF34582237FE840004DCD7 /* ContactMessageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactMessageCell.swift; sourceTree = ""; }; 50FF345A2237FE9C0004DCD7 /* ContactMessageSizeCalculator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactMessageSizeCalculator.swift; sourceTree = ""; }; + 797AD26323422BDB00E63579 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; 88916B221CF0DF2F00469F91 /* MessageKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MessageKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 88916B2C1CF0DF2F00469F91 /* MessageKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MessageKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 8962AC741F87AB230030B058 /* MessageKitDateFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageKitDateFormatterTests.swift; sourceTree = ""; }; @@ -406,6 +408,7 @@ B7A03F651F8669EB006AEF79 /* UIColor+Extensions.swift */, B7A03F661F8669EB006AEF79 /* UIView+Extensions.swift */, 1FCA6D2F201C1CC900BC3480 /* UIEdgeInsets+Extensions.swift */, + 797AD26323422BDB00E63579 /* UIColor.swift */, ); path = Extensions; sourceTree = ""; @@ -643,6 +646,7 @@ 38F8063321740D9E00CDB9DB /* BubbleCircle.swift in Sources */, B7A03F5C1F8669CA006AEF79 /* MessageCellDelegate.swift in Sources */, 5073C11D2175BEC60040EAD5 /* AudioMessageSizeCalculator.swift in Sources */, + 797AD26423422BDB00E63579 /* UIColor.swift in Sources */, 1FF377A420087C82004FD648 /* MessageKitError.swift in Sources */, 1F6C040E206A2AF4007BDE44 /* MessageReusableView.swift in Sources */, 388119462253EC30004B26AF /* TypingIndicatorCellSizeCalculator.swift in Sources */, diff --git a/Sources/Controllers/MessagesViewController.swift b/Sources/Controllers/MessagesViewController.swift index db05420f..bc4bc00e 100644 --- a/Sources/Controllers/MessagesViewController.swift +++ b/Sources/Controllers/MessagesViewController.swift @@ -146,9 +146,10 @@ UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { private func setupDefaults() { extendedLayoutIncludesOpaqueBars = true automaticallyAdjustsScrollViewInsets = false - view.backgroundColor = .white + view.backgroundColor = .backgroundColor messagesCollectionView.keyboardDismissMode = .interactive messagesCollectionView.alwaysBounceVertical = true + messagesCollectionView.backgroundColor = .backgroundColor } private func setupDelegates() { diff --git a/Sources/Extensions/UIColor+Extensions.swift b/Sources/Extensions/UIColor+Extensions.swift index 0d85ba9e..fb5a1f96 100644 --- a/Sources/Extensions/UIColor+Extensions.swift +++ b/Sources/Extensions/UIColor+Extensions.swift @@ -26,14 +26,43 @@ import Foundation internal extension UIColor { - static let incomingGray = UIColor(red: 230/255, green: 230/255, blue: 235/255, alpha: 1.0) + static var incomingGray: UIColor { + if #available(iOS 13, *) { + return UIColor.systemGray5 + } else { + return UIColor(red: 230/255, green: 230/255, blue: 235/255, alpha: 1.0) + } + } - static let outgoingGreen = UIColor(red: 69/255, green: 214/255, blue: 93/255, alpha: 1.0) + static var outgoingGreen: UIColor { + if #available(iOS 13, *) { + return UIColor.systemGreen + } else { + return UIColor(red: 69/255, green: 214/255, blue: 93/255, alpha: 1.0) + } + } - static let inputBarGray = UIColor(red: 247/255, green: 247/255, blue: 247/255, alpha: 1.0) + static var inputBarGray: UIColor { + if #available(iOS 13, *) { + return UIColor.systemGray2 + } else { + return UIColor(red: 247/255, green: 247/255, blue: 247/255, alpha: 1.0) + } + } - static let playButtonLightGray = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1.0) - - static let sendButtonBlue = UIColor(red: 15/255, green: 135/255, blue: 255/255, alpha: 1.0) + static var playButtonLightGray: UIColor { + if #available(iOS 13, *) { + return UIColor.systemGray6 + } else { + return UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1.0) + } + } + static var sendButtonBlue: UIColor { + if #available(iOS 13, *) { + return UIColor.systemBlue + } else { + return UIColor(red: 15/255, green: 135/255, blue: 255/255, alpha: 1.0) + } + } } diff --git a/Sources/Extensions/UIColor.swift b/Sources/Extensions/UIColor.swift new file mode 100644 index 00000000..df18caa7 --- /dev/null +++ b/Sources/Extensions/UIColor.swift @@ -0,0 +1,60 @@ +// +// UIColor.swift +// MessageKit +// +// Created by Vlada Radchenko on 9/30/19. +// Copyright © 2019 MessageKit. All rights reserved. +// + +import Foundation + +extension UIColor { + + static var backgroundColor: UIColor { + if #available(iOS 13, *) { + return systemBackground + } else { + return white + } + } + + static var labelColor: UIColor { + if #available(iOS 13, *) { + return label + } else { + return black + } + } + + static var placeholderTextColor: UIColor { + if #available(iOS 13, *) { + return placeholderText + } else { + return .darkGray + } + } + + static var grayColor: UIColor { + if #available(iOS 13, *) { + return .systemGray + } else { + return gray + } + } + + static var darkTextColor: UIColor { + if #available(iOS 13, *) { + return .systemGray + } else { + return darkText + } + } + + static var lightGrayColor: UIColor { + if #available(iOS 13, *) { + return .systemGray5 + } else { + return .lightGray + } + } +} diff --git a/Sources/Protocols/MessagesDisplayDelegate.swift b/Sources/Protocols/MessagesDisplayDelegate.swift index 29d43e80..70b72fc5 100644 --- a/Sources/Protocols/MessagesDisplayDelegate.swift +++ b/Sources/Protocols/MessagesDisplayDelegate.swift @@ -229,7 +229,7 @@ public extension MessagesDisplayDelegate { case .emoji: return .clear default: - guard let dataSource = messagesCollectionView.messagesDataSource else { return .white } + guard let dataSource = messagesCollectionView.messagesDataSource else { return .backgroundColor } return dataSource.isFromCurrentSender(message: message) ? .outgoingGreen : .incomingGray } } @@ -254,7 +254,7 @@ public extension MessagesDisplayDelegate { guard let dataSource = messagesCollectionView.messagesDataSource else { fatalError(MessageKitError.nilMessagesDataSource) } - return dataSource.isFromCurrentSender(message: message) ? .white : .darkText + return dataSource.isFromCurrentSender(message: message) ? .backgroundColor : .labelColor } func enabledDetectors(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> [DetectorType] { diff --git a/Sources/Views/AvatarView.swift b/Sources/Views/AvatarView.swift index 6563143e..31a7d363 100644 --- a/Sources/Views/AvatarView.swift +++ b/Sources/Views/AvatarView.swift @@ -161,7 +161,7 @@ open class AvatarView: UIImageView { // MARK: - Internal methods internal func prepareView() { - backgroundColor = .gray + backgroundColor = .grayColor contentMode = .scaleAspectFill layer.masksToBounds = true clipsToBounds = true diff --git a/Sources/Views/Cells/ContactMessageCell.swift b/Sources/Views/Cells/ContactMessageCell.swift index d7f50087..2273a834 100644 --- a/Sources/Views/Cells/ContactMessageCell.swift +++ b/Sources/Views/Cells/ContactMessageCell.swift @@ -34,7 +34,7 @@ open class ContactMessageCell: MessageContentCell { /// The view container that holds contact initials public lazy var initialsContainerView: UIView = { let initialsContainer = UIView(frame: CGRect.zero) - initialsContainer.backgroundColor = .white + initialsContainer.backgroundColor = .backgroundColor return initialsContainer }() @@ -42,7 +42,7 @@ open class ContactMessageCell: MessageContentCell { public lazy var initialsLabel: UILabel = { let initialsLabel = UILabel(frame: CGRect.zero) initialsLabel.textAlignment = .center - initialsLabel.textColor = .darkText + initialsLabel.textColor = .labelColor initialsLabel.font = UIFont.preferredFont(forTextStyle: .footnote) return initialsLabel }() diff --git a/Sources/Views/MessageLabel.swift b/Sources/Views/MessageLabel.swift index 90a78c05..8ae68e86 100644 --- a/Sources/Views/MessageLabel.swift +++ b/Sources/Views/MessageLabel.swift @@ -126,9 +126,9 @@ open class MessageLabel: UILabel { public static var defaultAttributes: [NSAttributedString.Key: Any] = { return [ - NSAttributedString.Key.foregroundColor: UIColor.darkText, + NSAttributedString.Key.foregroundColor: UIColor.darkTextColor, NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue, - NSAttributedString.Key.underlineColor: UIColor.darkText + NSAttributedString.Key.underlineColor: UIColor.darkTextColor ] }() diff --git a/Sources/Views/MessagesCollectionView.swift b/Sources/Views/MessagesCollectionView.swift index 27ca2d03..56cc313a 100644 --- a/Sources/Views/MessagesCollectionView.swift +++ b/Sources/Views/MessagesCollectionView.swift @@ -57,7 +57,7 @@ open class MessagesCollectionView: UICollectionView { public override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) { super.init(frame: frame, collectionViewLayout: layout) - backgroundColor = .white + backgroundColor = .backgroundColor registerReusableViews() setupGestureRecognizers() } diff --git a/Sources/Views/TypingIndicator.swift b/Sources/Views/TypingIndicator.swift index 60872b37..ff007c3d 100644 --- a/Sources/Views/TypingIndicator.swift +++ b/Sources/Views/TypingIndicator.swift @@ -33,7 +33,7 @@ open class TypingIndicator: UIView { public var bounceOffset: CGFloat = 2.5 /// A convenience accessor for the `backgroundColor` of each dot - open var dotColor: UIColor = UIColor.lightGray { + open var dotColor: UIColor = UIColor.lightGrayColor { didSet { dots.forEach { $0.backgroundColor = dotColor } } diff --git a/Tests/ControllersTest/MessagesViewControllerSpec.swift b/Tests/ControllersTest/MessagesViewControllerSpec.swift index 77c4de4c..5717fb32 100644 --- a/Tests/ControllersTest/MessagesViewControllerSpec.swift +++ b/Tests/ControllersTest/MessagesViewControllerSpec.swift @@ -70,7 +70,7 @@ final class MessagesViewControllerSpec: QuickSpec { expect(controller.extendedLayoutIncludesOpaqueBars).to(beTrue()) } it("sets the background color to be white") { - expect(controller.view.backgroundColor).to(be(UIColor.white)) + expect(controller.view.backgroundColor).to(be(UIColor.backgroundColor)) } it("sets keyboardDismissMode to .interactive") { let dismissMode = controller.messagesCollectionView.keyboardDismissMode diff --git a/Tests/ControllersTest/MessagesViewControllerTests.swift b/Tests/ControllersTest/MessagesViewControllerTests.swift index 640bbacd..c5f9f67e 100644 --- a/Tests/ControllersTest/MessagesViewControllerTests.swift +++ b/Tests/ControllersTest/MessagesViewControllerTests.swift @@ -105,7 +105,7 @@ class MessagesViewControllerTests: XCTestCase { func testCellForItemWithAttributedTextData_returnsTextMessageCell() { let messagesDataSource = MockMessagesDataSource() sut.messagesCollectionView.messagesDataSource = messagesDataSource - let attributes = [NSAttributedString.Key.foregroundColor: UIColor.black] + let attributes = [NSAttributedString.Key.foregroundColor: UIColor.labelColor] let attriutedString = NSAttributedString(string: "Test", attributes: attributes) messagesDataSource.messages.append(MockMessage(attributedText: attriutedString, user: messagesDataSource.senders[0], diff --git a/Tests/ViewsTests/MessagesCollectionViewTests.swift b/Tests/ViewsTests/MessagesCollectionViewTests.swift index a42fa54d..31d515f0 100644 --- a/Tests/ViewsTests/MessagesCollectionViewTests.swift +++ b/Tests/ViewsTests/MessagesCollectionViewTests.swift @@ -44,7 +44,7 @@ class MessagesCollectionViewTests: XCTestCase { func testInit() { XCTAssertEqual(messagesCollectionView.frame, rect) XCTAssertEqual(messagesCollectionView.collectionViewLayout, layout) - XCTAssertEqual(messagesCollectionView.backgroundColor, .white) + XCTAssertEqual(messagesCollectionView.backgroundColor, .backgroundColor) } }