diff --git a/Yep/Images.xcassets/icon_more_image.imageset/Contents.json b/Yep/Images.xcassets/icon_more_image.imageset/Contents.json
new file mode 100644
index 00000000..5d281b98
--- /dev/null
+++ b/Yep/Images.xcassets/icon_more_image.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_more_image.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf b/Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf
new file mode 100644
index 00000000..6376d178
Binary files /dev/null and b/Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf differ
diff --git a/Yep/Info.plist b/Yep/Info.plist
index bb251984..e208d771 100644
--- a/Yep/Info.plist
+++ b/Yep/Info.plist
@@ -32,7 +32,7 @@
CFBundleVersion
- 86
+ 87
Fabric
APIKey
diff --git a/Yep/Services/YepServiceSync.swift b/Yep/Services/YepServiceSync.swift
index 57399940..215f0525 100644
--- a/Yep/Services/YepServiceSync.swift
+++ b/Yep/Services/YepServiceSync.swift
@@ -757,8 +757,14 @@ func syncMessageWithMessageInfo(messageInfo: JSONDictionary, inRealm realm: Real
newMessage.createdUnixTime = updatedUnixTime
}
- // TODO: 可能可以根据是否已进入Conversation界面来修改到达时间,减少聊天界面的插入切换
- // 之后消息以到达时间排序
+ // 确保网络来的消息比任何已有的消息都要新,防止服务器消息延后发来导致插入到当前消息上面
+ if let latestMessage = realm.objects(Message).sorted("createdUnixTime", ascending: true).last {
+ if newMessage.createdUnixTime < latestMessage.createdUnixTime {
+ println("before newMessage.createdUnixTime: \(newMessage.createdUnixTime)")
+ newMessage.createdUnixTime = latestMessage.createdUnixTime + YepConfig.Message.localNewerTimeInterval
+ println("adjust newMessage.createdUnixTime: \(newMessage.createdUnixTime)")
+ }
+ }
realm.write {
realm.add(newMessage)
diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift
index faf3f614..1178744f 100644
--- a/Yep/ViewControllers/Conversation/ConversationViewController.swift
+++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift
@@ -1502,6 +1502,9 @@ class ConversationViewController: BaseViewController {
if newMessagesCount != messageIDs.count {
reloadConversationCollectionView()
println("newMessagesCount != messageIDs.count")
+ //#if DEBUG
+ YepAlert.alertSorry(message: "请截屏报告!\nnewMessagesCount: \(newMessagesCount)\nmessageIDs.count: \(messageIDs.count): \(messageIDs)", inViewController: self)
+ //#endif
return
}
}
@@ -2077,9 +2080,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
if let messageTextView = self?.messageToolbar.messageTextView {
if messageTextView.isFirstResponder() {
self?.messageToolbar.state = .Default
- delay(YepConfig.dismissKeyboardDelayTimeInterval) {
- self?.performSegueWithIdentifier("showMessageMedia", sender: message)
- }
return
}
}
@@ -2122,9 +2122,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
if let messageTextView = self?.messageToolbar.messageTextView {
if messageTextView.isFirstResponder() {
self?.messageToolbar.state = .Default
- delay(YepConfig.dismissKeyboardDelayTimeInterval) {
- self?.performSegueWithIdentifier("showMessageMedia", sender: message)
- }
return
}
}
@@ -2195,9 +2192,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
if let messageTextView = self?.messageToolbar.messageTextView {
if messageTextView.isFirstResponder() {
self?.messageToolbar.state = .Default
- delay(YepConfig.dismissKeyboardDelayTimeInterval) {
- self?.performSegueWithIdentifier("showMessageMedia", sender: message)
- }
return
}
}
@@ -2266,9 +2260,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
if let messageTextView = self?.messageToolbar.messageTextView {
if messageTextView.isFirstResponder() {
self?.messageToolbar.state = .Default
- delay(YepConfig.dismissKeyboardDelayTimeInterval) {
- self?.performSegueWithIdentifier("showMessageMedia", sender: message)
- }
return
}
}
diff --git a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift
index 308e4b00..9fbc12f2 100644
--- a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift
+++ b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift
@@ -33,7 +33,8 @@ class MessageMediaViewController: UIViewController {
title = NSLocalizedString("Preview", comment: "")
automaticallyAdjustsScrollViewInsets = false
-
+
+ mediaControlView.hidden = true
if let message = message {
@@ -91,6 +92,8 @@ class MessageMediaViewController: UIViewController {
case MessageMediaType.Video.rawValue:
+ mediaView.imageView.hidden = true
+
mediaControlView.type = .Video
mediaControlView.playState = .Playing
@@ -170,6 +173,13 @@ class MessageMediaViewController: UIViewController {
delay(0.01) {
self.hideStatusBar = true
}
+
+ mediaControlView.alpha = 0
+ mediaControlView.hidden = false
+
+ UIView.animateWithDuration(0.2, delay: 0.0, options: .CurveEaseInOut, animations: {
+ self.mediaControlView.alpha = 1
+ }, completion: { _ in })
}
override func viewWillDisappear(animated: Bool) {
diff --git a/Yep/Views/Media/MediaControlView.swift b/Yep/Views/Media/MediaControlView.swift
index 98445675..a19a42e5 100644
--- a/Yep/Views/Media/MediaControlView.swift
+++ b/Yep/Views/Media/MediaControlView.swift
@@ -23,6 +23,7 @@ class MediaControlView: UIView {
case .Image:
timeLabel.hidden = true
playButton.hidden = true
+ shareButton.setImage(UIImage(named: "icon_more_image"), forState: .Normal)
case .Video:
timeLabel.hidden = false
@@ -120,7 +121,7 @@ class MediaControlView: UIView {
let constraintsV = NSLayoutConstraint.constraintsWithVisualFormat("V:|[timeLable]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
- let constraintsH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[timeLable]-(>=0)-[playButton]-(>=0)-[shareButton]|", options: .AlignAllCenterY | .AlignAllTop | .AlignAllBottom, metrics: nil, views: viewsDictionary)
+ let constraintsH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-30-[timeLable]-(>=0)-[playButton]-(>=0)-[shareButton]|", options: .AlignAllCenterY | .AlignAllTop | .AlignAllBottom, metrics: nil, views: viewsDictionary)
NSLayoutConstraint.activateConstraints(constraintsV)
NSLayoutConstraint.activateConstraints(constraintsH)