diff --git a/Classes/Swift/Chat/Views/MessageView.swift b/Classes/Swift/Chat/Views/MessageView.swift index c54d559cb..476dbdb0c 100644 --- a/Classes/Swift/Chat/Views/MessageView.swift +++ b/Classes/Swift/Chat/Views/MessageView.swift @@ -34,7 +34,7 @@ class MessageView: UIView, UITextViewDelegate { let sendButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) let emojisButton = CallControlButton(buttonTheme:VoipTheme.nav_button("emoji")) let messageTextView = UIView() - let messageWithEmojiView = UIView() + let messageWithEmojiView = UIStackView() let messageText = UITextView() let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png")) var fileContext = false @@ -86,12 +86,12 @@ class MessageView: UIView, UITextViewDelegate { messageWithEmojiView.matchParentDimmensions(insetedByDx: 10).done() messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get() - messageWithEmojiView.addSubview(messageText) + messageWithEmojiView.addArrangedSubview(messageText) messageText.matchParentHeight().alignParentLeft().alignParentRight(withMargin: 40).done() messageText.font = UIFont.systemFont(ofSize: 18) messageText.delegate = self - messageWithEmojiView.addSubview(emojisButton) + messageWithEmojiView.addArrangedSubview(emojisButton) emojisButton.alignParentRight().matchParentHeight().done() UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in @@ -105,8 +105,7 @@ class MessageView: UIView, UITextViewDelegate { if ((messageText.text.isEmpty && !fileContext) || isLoading) { sendButton.isEnabled = false emojisButton.isHidden = false - messageText.setWidth(80) - NotificationCenter.default.post(name: Notification.Name("LinphoneTextViewSize"), object: self) + NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self) lastNumLines = 0 } else { if (messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.first?.properties.isEmojiPresentation == true){ @@ -118,14 +117,11 @@ class MessageView: UIView, UITextViewDelegate { } if onlyEmojis { emojisButton.isHidden = false - messageText.setWidth(100) } else { emojisButton.isHidden = true - messageText.setWidth(80) } } else { - emojisButton.isHidden = true - messageText.setWidth(80) + emojisButton.isHidden = true } if !isComposing { chatRoom.compose() @@ -147,17 +143,17 @@ class MessageView: UIView, UITextViewDelegate { } extension UIView { - func setWidth(_ h:CGFloat, animateTime:TimeInterval?=nil) { + func setWidth(_ w:CGFloat, animateTime:TimeInterval?=nil) { if let c = self.constraints.first(where: { $0.firstAttribute == .width && $0.relation == .equal }) { - c.constant = CGFloat(h) + c.constant = CGFloat(w) if let animateTime = animateTime { UIView.animate(withDuration: animateTime, animations:{ - self.superview?.layoutIfNeeded() + self.layoutIfNeeded() }) } else { - self.superview?.layoutIfNeeded() + self.layoutIfNeeded() } } } diff --git a/Classes/Swift/Util/BackActionsNavigationView.swift b/Classes/Swift/Util/BackActionsNavigationView.swift index dbd0e647d..8d9888d28 100644 --- a/Classes/Swift/Util/BackActionsNavigationView.swift +++ b/Classes/Swift/Util/BackActionsNavigationView.swift @@ -277,6 +277,7 @@ class BackActionsNavigationView: UIViewController { NotificationCenter.default.addObserver(self, selector: #selector(self.rotated), name: UIDevice.orientationDidChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(self.changeSizeOfTextView), name: Notification.Name("LinphoneTextViewSize"), object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(self.resetSizeOfTextView), name: Notification.Name("LinphoneResetTextViewSize"), object: nil) } func resetRecordingProgressBar(){ @@ -400,12 +401,18 @@ class BackActionsNavigationView: UIViewController { @objc func changeSizeOfTextView(){ let numLines = (messageView.messageText.contentSize.height / messageView.messageText.font!.lineHeight) + print("changeSizeOfTextViewchangeSizeOfTextView \(numLines)") + if numLines >= 3 && numLines <= 6 { messageView.setHeight(33*numLines - 33, animateTime: 0.1) } else if numLines < 3 { messageView.setHeight(66, animateTime: 0.1) } } + + @objc func resetSizeOfTextView(){ + messageView.setHeight(66, animateTime: 0.1) + } } extension UIView {