Files
libr-ios/librx/WebViewController.swift
T
2015-11-12 22:59:34 +08:00

191 lines
6.0 KiB
Swift

//
// WebViewController.swift
// librx
//
// Created by Yunlong Zheng on 15/8/20.
// Copyright (c) 2015年 librx. All rights reserved.
//
import UIKit
class WebViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var likeButton: UIBarButtonItem!
@IBOutlet weak var activeIndicatorView: UIActivityIndicatorView!
@IBOutlet weak var bookmarkButton: UIBarButtonItem!
private var hasFinishLoading = false
private var isLikedPost = false
private var isBookMarkPost = false
var post : Post!
override func viewDidLoad() {
super.viewDidLoad()
self.activeIndicatorView.hidden = false
self.activeIndicatorView.startAnimating()
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
self.navigationController?.navigationBarHidden = true
loadPostContent(post)
webView.delegate = self
webView.scrollView.bounces = false;
self.title = self.post.title
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
LibrxService.viewPost(post.id)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
override func didReceiveMemoryWarning() {
if webView.loading {
webView.stopLoading()
}
let alert = UIAlertController(title: "Stopped Loading",
message: "This site is memory intensive and may cause a crash. Please use a browser instead.",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Dismiss",
style: UIAlertActionStyle.Cancel, handler: { (action) -> Void in
}))
alert.addAction(UIAlertAction(title: "Open in Safari",
style: UIAlertActionStyle.Default, handler: { (action) -> Void in
UIApplication.sharedApplication().openURL(NSURL(string:self.post.url)!)
return
}))
self.presentViewController(alert, animated: true, completion: nil)
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent;
}
@IBAction func toggleLikePostAction(sender: AnyObject) {
if self.isLikedPost {
LibrxService.unlikePost(self.post.id)
self.likeButton.image = UIImage(named: "LikeEmpty")
self.isLikedPost = false
}else {
LibrxService.likePost(self.post.id)
self.likeButton.image = UIImage(named: "Like")
self.isLikedPost = true
}
}
@IBAction func toggleBookMarkPostAction(sender: AnyObject) {
if self.isBookMarkPost {
LibrxService.unBookmarkPost(self.post.id)
self.bookmarkButton.image = UIImage(named: "Bookmark")
self.isBookMarkPost = false
}else {
LibrxService.bookmarkPost(self.post.id)
self.bookmarkButton.image = UIImage(named: "Like")
self.isBookMarkPost = true
}
}
@IBAction func dismiss(sender: AnyObject) {
self.navigationController?.popViewControllerAnimated(true)
self.dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func shareToWeChat(sender: AnyObject) {
self.shareToSocialMedia(self.post)
}
func loadPostContent(post:Post) {
LibrxService.postDetails(post.id) { [weak self](post) -> () in
// mark: load static html content when post is good format
if post.goodFormat {
if let that = self {
that.webView.loadHTMLString(post.getFormatContent(), baseURL: nil)
}
} else{
self!.webView.loadRequest(NSURLRequest(URL: NSURL(string:post.url)!))
}
}
}
}
extension WebViewController: UMSocialUIDelegate{
func shareToSocialMedia(post: Post) {
UMSocialData.defaultData().urlResource.setResourceType(UMSocialUrlResourceTypeImage, url: post.thumbnail)
UMSocialData.defaultData().extConfig.wechatSessionData.url = post.url
UMSocialData.defaultData().extConfig.wechatSessionData.title = post.title
UMSocialData.defaultData().extConfig.wechatSessionData.shareText = post.summary
UMSocialData.defaultData().extConfig.wechatTimelineData.url = post.url
UMSocialData.defaultData().extConfig.wechatTimelineData.title = post.title
UMSocialData.defaultData().extConfig.wechatTimelineData.shareText = post.summary
UMSocialData.defaultData().extConfig.wechatFavoriteData.url = post.url
UMSocialData.defaultData().extConfig.wechatFavoriteData.title = post.title
UMSocialData.defaultData().extConfig.wechatFavoriteData.shareText = post.summary
UMSocialSnsService.presentSnsIconSheetView(self, appKey: UMSocialConstants.appKey, shareText: post.title, shareImage: UIImage(named: "default"),
shareToSnsNames: [UMShareToSina,
UMShareToWechatTimeline,
UMShareToWechatSession,
UMShareToEmail,
UMShareToSms
],
delegate:self)
}
func didFinishGetUMSocialDataInViewController(response: UMSocialResponseEntity!) {
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog("share to sns name is \(response.data)")
}
}
}
extension WebViewController: UIWebViewDelegate{
func webViewDidFinishLoad(webView: UIWebView) {
self.activeIndicatorView.hidden = true
}
func webViewDidStartLoad(webView: UIWebView) {
hasFinishLoading = false
updateProgress()
}
func updateProgress() {
}
}