Repo created
This commit is contained in:
parent
4af19165ec
commit
68073add76
12458 changed files with 12350765 additions and 2 deletions
46
iphone/Maps/Classes/Pages/ImageViewCrossDisolve.swift
Normal file
46
iphone/Maps/Classes/Pages/ImageViewCrossDisolve.swift
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
class ImageViewCrossDisolve: UIView {
|
||||
private var imageViews: [UIImageView] = []
|
||||
var images: [UIImage?] = [] {
|
||||
didSet{
|
||||
imageViews.forEach { (imageView) in
|
||||
imageView.removeFromSuperview();
|
||||
}
|
||||
for image in images{
|
||||
let imageView = UIImageView(image: image);
|
||||
self.addSubview(imageView)
|
||||
imageView.alpha = 0
|
||||
imageView.contentMode = .scaleAspectFill
|
||||
imageView.translatesAutoresizingMaskIntoConstraints = false;
|
||||
imageView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
|
||||
imageView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
|
||||
imageView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
|
||||
imageView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
|
||||
self.imageViews.append(imageView)
|
||||
}
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
var pageCount: Int {
|
||||
return images.count
|
||||
}
|
||||
var currentPage: CGFloat = 0.0 {
|
||||
didSet {
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
|
||||
private func updateLayout() {
|
||||
for i in 0..<imageViews.count {
|
||||
let imageView = imageViews[i]
|
||||
let progress:CGFloat = currentPage - CGFloat(i)
|
||||
let alpha = max(CGFloat(0.0), min(CGFloat(1.0), progress+1))
|
||||
imageView.alpha = alpha
|
||||
}
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
65
iphone/Maps/Classes/Pages/PageIndicator.swift
Normal file
65
iphone/Maps/Classes/Pages/PageIndicator.swift
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
fileprivate let kDotWidth: CGFloat = 6.0
|
||||
fileprivate let kExtraDotWidth: CGFloat = kDotWidth * 4
|
||||
|
||||
class PageIndicator: UIView {
|
||||
private var pageViews: [UIView] = []
|
||||
var pageCount = 0 {
|
||||
didSet {
|
||||
pageViews.removeAll()
|
||||
for _ in 0..<pageCount {
|
||||
let v = UIView()
|
||||
v.layer.cornerRadius = kDotWidth / 2.0
|
||||
v.clipsToBounds = true
|
||||
pageViews.append(v)
|
||||
addSubview(v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var currentPage: CGFloat = 0.0 {
|
||||
didSet {
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
|
||||
var color = UIColor(white: 1.0, alpha: 0.2) {
|
||||
didSet {
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
|
||||
var activeColor = UIColor(white: 1.0, alpha: 0.7) {
|
||||
didSet {
|
||||
updateLayout()
|
||||
}
|
||||
}
|
||||
|
||||
private func updateLayout() {
|
||||
for i in 0..<pageCount {
|
||||
let v = pageViews[i]
|
||||
|
||||
let d = CGFloat(i) - currentPage
|
||||
let ad = abs(d)
|
||||
let x = kDotWidth * CGFloat(i * 2) + kExtraDotWidth * min(max(0, d), 1)
|
||||
let w = kDotWidth + kExtraDotWidth * max(0, (1 - ad))
|
||||
v.frame = CGRect(x: x, y: 0, width: w, height: kDotWidth)
|
||||
|
||||
if ad >= 1 {
|
||||
v.backgroundColor = color
|
||||
} else {
|
||||
v.backgroundColor = UIColor.intermediateColor(color1: activeColor, color2: color, ad)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
updateLayout()
|
||||
}
|
||||
|
||||
override var intrinsicContentSize: CGSize {
|
||||
let w = (pageCount > 0) ? (kExtraDotWidth + kDotWidth * CGFloat((pageCount - 1) * 2 + 1)) : 0
|
||||
return CGSize(width: w, height: kDotWidth)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue