class PhotoWallBigImageController: UIViewController, UIScrollViewDelegate {
//第幾張照片
var index:Int?
//所有的照片
var data:[PhotoWallBean] = []
//照片張數
var count:Int?
var scrollView:UIScrollView!
var iasdf:Int = 0
var bar:UIView!
//底部描述文字的大小
var worldSize:CGFloat = 12
//底部字的的高度
var buttomView_height:CGFloat = 120
//底部描述文字到右邊的距離
var buttomView_right:CGFloat = 60
//上一個界面的傳過來的本地圖片
var lastImage:String?
override func viewDidLoad() {
super.viewDidLoad()
if AppDelegate.phoneType == PhoneType.IPHONE_6_P{
worldSize = 14
buttomView_height = 140
buttomView_right = 80
}
addView()
addNAvigation()
calculaNowFrame()
}
//根據上一個界面點擊的圖片計算當前scrollview偏移量
func calculaNowFrame(){
var nowFrame = scrollView.frame
nowFrame.origin.x = nowFrame.size.width * CGFloat(index! - 0)
nowFrame.origin.y = 0
scrollView.scrollRectToVisible(nowFrame, animated: true)
}
//頂部bar和圖片描述的隱藏狀態
var isOrNo:Bool = true
//添加界面
//底部描述文字
var buttomViews:[UIView] = []
//承載照片的滾動view
var imageScrollViews:[UIScrollView] = []
//承載照片的view
var imageViews:[UIImageView] = []
//承載照片的view、用於縮放
var imageBaseView:UIView!
//用於承載所有照片的高度
var imageHeight:[CGFloat] = []
var pages:[UIView] = []
func addView(){
scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
self.view.addSubview(scrollView)
//設置scrollView的內容總尺寸
if count == nil {
count = 0
}
scrollView.contentSize = CGSizeMake(
self.view.frame.width * CGFloat(count!),
self.view.frame.height
)
//關閉滾動條顯示
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.scrollsToTop = false
//關閉回彈
scrollView.bounces = false
//協議代理,在本類中處理滾動事件
scrollView.delegate = self
scrollView.tag = 1
//滾動時只能停留到某一頁
scrollView.pagingEnabled = true
//添加頁面到滾動面板裏
let size = scrollView.bounds.size
let taget = UITapGestureRecognizer(target:self, action: "scrollViewAction")
taget.numberOfTapsRequired = 1
taget.numberOfTouchesRequired = 1
scrollView.userInteractionEnabled = true
scrollView.addGestureRecognizer(taget)
if let lImage = lastImage{
let page = UIView()
let imageScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageScrollView.showsHorizontalScrollIndicator = false
imageScrollView.showsVerticalScrollIndicator = false
imageScrollView.scrollsToTop = false
//關閉回彈
imageScrollView.bounces = false
imageScrollView.backgroundColor = UIColor.clearColor()
imageScrollViews.append(imageScrollView)
imageScrollView.maximumZoomScale = 2
imageScrollView.minimumZoomScale = 1
imageScrollView.delegate = self
imageScrollView.tag = 2
let imageView = UIImageView()
imageViews.append(imageView)
//添加雙擊事件
let imageViewTaget = UITapGestureRecognizer(target:self, action: "imageViewTagetAction")
imageViewTaget.numberOfTapsRequired = 2
imageViewTaget.numberOfTouchesRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageViewTaget)
imageView.image = UIImage(named: lImage)
addImageScroll(imageView,imageScrollView:imageScrollView,page:page,photodescription:"")
}else{
for course in data {
let page = UIView()
var imageScrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageScrollView.showsHorizontalScrollIndicator = false
imageScrollView.showsVerticalScrollIndicator = false
imageScrollView.scrollsToTop = false
//關閉回彈
imageScrollView.bounces = false
imageScrollView.backgroundColor = UIColor.clearColor()
imageScrollViews.append(imageScrollView)
imageScrollView.maximumZoomScale = 2
imageScrollView.minimumZoomScale = 1
imageScrollView.delegate = self
imageScrollView.tag = 2
var imageView = UIImageView()
imageViews.append(imageView)
//添加雙擊事件
let imageViewTaget = UITapGestureRecognizer(target:self, action: "imageViewTagetAction")
imageViewTaget.numberOfTapsRequired = 2
imageViewTaget.numberOfTouchesRequired = 1
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(imageViewTaget)
imageView.sd_setImageWithURL(NSURL(string: course.photosurl)!, placeholderImage: UIImage(named: "default_avatar_no_border"), completed: { (image, errir, cacheType, url) -> Void in
weak var this = self
self.addImageScroll(imageView,imageScrollView:imageScrollView,page:page,photodescription:course.photodescription)
})
// imageView.bounds = CGRectMake(0, 0, self.view.frame.width, 0)
// imageView.contentMode = UIViewContentMode.ScaleToFill
// imageView.contentMode = UIViewContentMode.ScaleAspectFit
// imageView.contentMode = UIViewContentMode.ScaleAspectFill
// imageView.contentMode = UIViewContentMode.TopLeft
}
}
}
// //滾動 觸發
// func scrollViewDidScroll(scrollView: UIScrollView) {
// if scrollView.tag == 1{
// debugPrint("asdfasdfas")
// }
// }
// //完成滾動時候調用
// func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
// if scrollView.tag == 1{
// for item in scrollView.subviews{
// item.removeFromSuperview()
// }
// for i in 0...(Int(count!) - 1){
// scrollView.addSubview(pages[i])
// }
// }
// }
//縮放的事件
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
if scrollView.tag == 2{
for item in scrollView.subviews{
if item.tag == 88{
scrollView.contentSize = CGSizeMake(scrollView.frame.width,scrollView.contentSize.height)
return item
}else{
return nil
}
}
return nil
}else{
return nil
}
}
func addImageScroll(imageView:UIImageView,imageScrollView:UIScrollView,page:UIView,photodescription:String){
let imageView_height = (self.view.frame.width/(imageView.image?.size.width)!) * (imageView.image?.size.height)!
imageHeight.append(imageView_height)
if imageView_height > self.view.frame.height{
imageView.frame = CGRect(x: 0, y: 0,
width: self.view.frame.width, height: imageView_height)
imageScrollView.contentSize = CGSizeMake(imageScrollView.frame.width,imageView_height)
imageBaseView = UIView(frame: CGRect(x: 0, y: 0,
width: imageScrollView.frame.width, height: imageView.frame.height))
}else{
imageView.frame = CGRect(x: 0, y: (self.view.frame.height - imageView_height)/2,
width: self.view.frame.width, height: imageView_height)
imageBaseView = UIView(frame: CGRect(x: 0, y: 0,
width: imageScrollView.frame.width, height: imageScrollView.frame.height))
}
imageBaseView.tag = 88
imageBaseView.addSubview(imageView)
imageScrollView.addSubview(imageBaseView)
page.addSubview(imageScrollView)
page.backgroundColor = UIColor.blackColor()
page.frame = CGRect(x: CGFloat(iasdf) * self.view.frame.width, y: 0,
width: self.view.frame.width + 200, height: self.view.frame.height)
iasdf = iasdf + 1
pages.append(page)
scrollView.addSubview(page)
//添加底部說明文字
var buttomView = UIView(frame: CGRectMake(0, self.view.frame.height - 160, self.view.frame.width, 160))
buttomView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
// buttomView.backgroundColor = UIColor.redColor()
page.addSubview(buttomView)
buttomViews.append(buttomView)
var buttomScrollView = UIScrollView(frame: CGRectMake(10, 10, self.view.frame.width - buttomView_right - 10, buttomView_height))
buttomScrollView.backgroundColor = UIColor.clearColor()
// buttomScrollView.backgroundColor = UIColor.blueColor()
buttomView.addSubview(buttomScrollView)
var buttomLabel = UILabel(frame: CGRectMake(0, 0, buttomScrollView.frame.width, buttomView_height))
buttomLabel.backgroundColor = UIColor.clearColor()
buttomLabel.textColor = UIColor.whiteColor()
buttomLabel.font = UIFont.systemFontOfSize(worldSize)
buttomLabel.numberOfLines = 0
buttomLabel.text = photodescription
buttomLabel.sizeToFit()
buttomScrollView.contentSize = CGSizeMake(buttomScrollView.frame.width,buttomLabel.frame.height)
buttomScrollView.showsHorizontalScrollIndicator = false
buttomScrollView.showsVerticalScrollIndicator = false
buttomScrollView.addSubview(buttomLabel)
//添加第幾張圖的字
var numberOfLabel = UILabel(frame: CGRectMake(buttomView.frame.width - 10, 10, 0, worldSize))
numberOfLabel.textColor = UIColor(red: 255, green: 246, blue: 0, alpha: 1)
numberOfLabel.font = UIFont.systemFontOfSize(worldSize)
numberOfLabel.text = "\(iasdf)/\(count!)"
numberOfLabel.sizeToFit()
numberOfLabel.frame = CGRect(x: buttomView.frame.width - 10 - numberOfLabel.frame.width, y: 10, width: numberOfLabel.frame.width, height: numberOfLabel.frame.height)
buttomView.addSubview(numberOfLabel)
}
func imageViewTagetAction(){
}
func scrollViewAction(){
if isOrNo{
for i in 0...(Int(count!) - 1){
buttomViews[i].hidden = true
}
bar.hidden = true
isOrNo = !isOrNo
}else{
for i in 0...(Int(count!) - 1){
buttomViews[i].hidden = false
}
bar.hidden = false
isOrNo = !isOrNo
}
}
func addNAvigation(){
bar = UIView(frame: CGRectMake(0, 0, self.view.frame.width, 64))
bar.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0)
let leftButton:UIButton = UIButton(type: UIButtonType.Custom)
leftButton.frame = CGRectMake(7, 20, 43, 44)
leftButton.setImage(UIImage(named: "back_white_2015_8_31"), forState: UIControlState.Normal)
leftButton.titleLabel?.font = UIFont.systemFontOfSize(17)
leftButton.addTarget(self, action: "onNavigationBarLeftButtonClick", forControlEvents: UIControlEvents.TouchUpInside)
bar.addSubview(leftButton)
// bar.hidden = true
self.view.addSubview(bar)
}
override func onNavigationBarLeftButtonClick() {
self.dismissViewControllerAnimated(false, completion: nil)
}
//調整statusbar顏色
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}