드롭다운 확대 이미지 컨트롤 Swift
//
// WPPathCover.swift
// ArtCircle
//
// Created by wupeng on 15/12/29.
//
//
import UIKit
class WPPathCover: UIView {
let OBSERVERKEYCONTENTOFFSET = "contentOffset"
private let blurView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light))
private let bannerImageView:UIImageView = UIImageView(frame: CGRectZero)
var backgroundImage = "" {
didSet {
self.bannerImageView.kf_setImageWithURL(NSURL(string: self.backgroundImage)!, placeholderImage: UIImage(named: "DefaultLoading"))
}
}
var tableView:UITableView!
let parallaxHeight:CGFloat = tableHeaderViewHeight + 10
init(frame: CGRect,onTableView tableView:UITableView) {
super.init(frame: CGRectZero)
self.frame = CGRect(x: CGFloat.min, y: CGFloat.min, width: UIScreen.mainScreen().bounds.size.width, height: self.parallaxHeight)
self.bannerImageView.frame = self.bounds
self.bannerImageView.addSubview(self.blurView)
self.blurView.alpha = CGFloat.min
self.blurView.snp_makeConstraints { (make) -> Void in
make.edges.equalTo(self.bannerImageView).inset(UIEdgeInsets(top: CGFloat.min, left: CGFloat.min, bottom: CGFloat.min, right: CGFloat.min))
}
tableView.backgroundColor = UIColor.clearColor()
tableView.superview?.insertSubview(self.bannerImageView, belowSubview: tableView)
self.tableView = tableView
self.tableView.addObserver(self, forKeyPath: OBSERVERKEYCONTENTOFFSET, options: NSKeyValueObservingOptions.New, context: nil)
self.backgroundColor = UIColor.clearColor()
self.bannerImageView.contentMode = UIViewContentMode.ScaleAspectFill
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if object is UITableView {
if keyPath == OBSERVERKEYCONTENTOFFSET {
let tempTableView = object as! UITableView
self.offsetY = Float(tempTableView.contentOffset.y)
}
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var offsetY:Float = 0 {
didSet {
if self.offsetY < 0.0 {
var frame = self.bannerImageView.bounds
let alpha = CGFloat(fabsf(self.offsetY)) / self.parallaxHeight
print(alpha)
frame.size.height = self.parallaxHeight + CGFloat(fabsf(self.offsetY))
self.bannerImageView.frame = frame
if alpha > 0.1 {
self.blurView.alpha = alpha + 0.5
} else {
self.blurView.alpha = CGFloat.min
}
} else {
var frame = self.bannerImageView.bounds
frame.origin.y = CGFloat(-self.offsetY)
self.bannerImageView.frame = frame
}
}
}
deinit {
self.tableView.removeObserver(self, forKeyPath: OBSERVERKEYCONTENTOFFSET)
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.