Merge branch 'develop' of https://github.com/CatchChat/Yep into develop

This commit is contained in:
kevinzhow
2015-07-29 21:39:10 +08:00
4 changed files with 55 additions and 10 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ extension NSFileManager {
}
// Image
class func yepMessageImageURLWithName(name: String) -> NSURL? {
if let messageCachesURL = yepMessageCachesURL() {
+16
View File
@@ -238,6 +238,22 @@ class Message: Object {
dynamic var thumbnailURLString: String = ""
dynamic var localThumbnailName: String = ""
var thumbnailImage: UIImage? {
switch mediaType {
case MessageMediaType.Image.rawValue:
if let imageFileURL = NSFileManager.yepMessageImageURLWithName(localAttachmentName) {
return UIImage(contentsOfFile: imageFileURL.path!)
}
case MessageMediaType.Video.rawValue:
if let imageFileURL = NSFileManager.yepMessageImageURLWithName(localThumbnailName) {
return UIImage(contentsOfFile: imageFileURL.path!)
}
default:
return nil
}
return nil
}
dynamic var downloadState: Int = MessageDownloadState.NoDownload.rawValue
dynamic var mediaMetaData: MediaMetaData?
@@ -37,6 +37,18 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
var snapshot: UIView?
var frame = CGRectZero
var thumbnailImage: UIImage? {
willSet {
let imageView = UIImageView()
imageView.contentMode = .ScaleAspectFit
imageView.image = newValue
imageView.alpha = 0
thumbnailImageView = imageView
}
}
var thumbnailImageView: UIImageView?
var transitionView: UIView? {
didSet {
if let transitionView = transitionView {
@@ -51,6 +63,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
var transitionContext: UIViewControllerContextTransitioning?
func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
// return 2
return isPresentation ? 0.35 : 0.35
}
@@ -78,7 +91,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
let containerView = transitionContext.containerView()
if let snapshot = snapshot {
snapshot.alpha = 0
snapshot.alpha = 1
let transitionViewCover = UIView(frame: frame)
transitionViewCover.backgroundColor = UIColor.whiteColor()
@@ -98,7 +111,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
let animatingVC = toVC!
let animatingView = toView!
if let transitionViewSnapshot = transitionViewSnapshot {
if let transitionViewSnapshot = transitionViewSnapshot, thumbnailImageView = thumbnailImageView {
animatingVC.view.backgroundColor = UIColor.clearColor()
animatingVC.mediaView.alpha = 0
@@ -108,7 +121,8 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
transitionViewSnapshot.frame = frame
animatingView.addSubview(transitionViewSnapshot)
snapshot?.alpha = 1
thumbnailImageView.frame = frame
animatingView.addSubview(thumbnailImageView)
let fullDuration = transitionDuration(transitionContext)
@@ -118,7 +132,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
UIView.animateKeyframesWithDuration(fullDuration, delay: 0.0, options: .CalculationModeLinear, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.4, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.7, relativeDuration: 0.3, animations: { () -> Void in
animatingVC.view.backgroundColor = UIColor.blackColor()
})
@@ -130,7 +144,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
// transitionViewSnapshot.center = animatingView.center
// })
UIView.addKeyframeWithRelativeStartTime(0.4, relativeDuration: 0.5, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.9, animations: { () -> Void in
let targetWidth = animatingView.bounds.width + self.largerOffset
let dw = targetWidth - transitionViewSnapshot.bounds.width
@@ -142,9 +156,15 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
transitionViewSnapshot.frame = frame
transitionViewSnapshot.center = animatingView.center
thumbnailImageView.frame = frame
thumbnailImageView.center = animatingView.center
// transitionViewSnapshot.alpha = 0.5
thumbnailImageView.alpha = 1
})
UIView.addKeyframeWithRelativeStartTime(0.9, relativeDuration: 0.0, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.9, relativeDuration: 0.1, animations: { () -> Void in
// let ratio = (animatingView.bounds.width + self.largerOffset) / animatingView.bounds.width
// animatingVC.mediaView.transform = CGAffineTransformMakeScale(ratio, ratio)
animatingVC.mediaView.alpha = 1
@@ -162,6 +182,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
animatingVC.view.backgroundColor = UIColor.blackColor()
transitionViewSnapshot.removeFromSuperview()
thumbnailImageView.removeFromSuperview()
//self.snapshot?.removeFromSuperview()
@@ -184,6 +205,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
containerView.addSubview(toView!)
if let snapshot = snapshot {
snapshot.alpha = 1
containerView.addSubview(snapshot)
}
@@ -194,7 +216,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
let fullDuration = transitionDuration(transitionContext)
if let transitionViewSnapshot = transitionViewSnapshot {
if let transitionViewSnapshot = transitionViewSnapshot, thumbnailImageView = thumbnailImageView {
self.transitionView?.alpha = 0
@@ -213,12 +235,17 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
UIView.addKeyframeWithRelativeStartTime(0.2, relativeDuration: 0.0, animations: { () -> Void in
animatingView.addSubview(transitionViewSnapshot)
// transitionViewSnapshot.center = animatingView.center
transitionViewSnapshot.alpha = 1
transitionViewSnapshot.alpha = 0
thumbnailImageView.alpha = 1
animatingVC.mediaView.alpha = 0
})
UIView.addKeyframeWithRelativeStartTime(0.2, relativeDuration: 0.6, animations: { () -> Void in
UIView.addKeyframeWithRelativeStartTime(0.2, relativeDuration: 0.8, animations: { () -> Void in
transitionViewSnapshot.frame = self.frame
thumbnailImageView.frame = self.frame
transitionViewSnapshot.alpha = 1
thumbnailImageView.alpha = 0
})
@@ -227,6 +254,7 @@ class ConversationMessagePreviewNavigationControllerDelegate: NSObject, UINaviga
self.transitionView?.alpha = 1
transitionViewSnapshot.removeFromSuperview()
thumbnailImageView.removeFromSuperview()
self.snapshot?.removeFromSuperview()
@@ -1526,6 +1526,7 @@ class ConversationViewController: BaseViewController {
let delegate = ConversationMessagePreviewNavigationControllerDelegate()
delegate.snapshot = UIScreen.mainScreen().snapshotViewAfterScreenUpdates(false)
delegate.frame = frame
delegate.thumbnailImage = message.thumbnailImage
delegate.transitionView = transitionView
navigationControllerDelegate = delegate