Commit 41db5cfa by Dmitry Stepanets

Replaced frames to autolayout

parent fac5e487
......@@ -14,22 +14,19 @@ class OnboardingPageControl: UIView {
private let kIndicatorSize: CGSize = .init(width: 6, height: 6)
private var currentPageIndex = 0
private let totalPagesCount: Int
private let indicator = CAShapeLayer()
private var dots = [CAShapeLayer]()
private let indicator = UIView()
private var dots = [UIView]()
init(totalPagesCount: Int) {
self.totalPagesCount = totalPagesCount
super.init(frame: .zero)
self.backgroundColor = .gray
self.backgroundColor = .lightGray
prepareDots()
prepareIndicator()
}
override func layoutSubviews() {
super.layoutSubviews()
//Update Y positions
snp.makeConstraints { make in
make.height.equalTo(kDotSize.height)
}
}
required init?(coder: NSCoder) {
......@@ -51,40 +48,42 @@ class OnboardingPageControl: UIView {
// print("[Frame] prev dot frame: \(previousDot.frame)")
let delta = targetDot.frame.origin.x - previousDot.frame.origin.x
indicator.frame.origin.x = previousDot.frame.origin.x + delta * scrollProgress
indicator.snp.updateConstraints { update in
update.left.equalToSuperview().inset(previousDot.frame.origin.x + delta * scrollProgress)
}
// indicator.frame.origin.x = previousDot.frame.origin.x + delta * scrollProgress
}
}
private extension OnboardingPageControl {
func prepareDots() {
for index in 0..<totalPagesCount {
let dot = CAShapeLayer()
let cgIndex = CGFloat(index)
let space = index == 0 ? 0 : kSpacePerDot
let size = index == 0 ? kIndicatorSize : kDotSize
let dot = UIView()
dot.backgroundColor = UIColor.blue
dot.layer.cornerRadius = kDotSize.height / 2
addSubview(dot)
dots.append(dot)
let rect: CGRect
if index == 0 {
rect = .init(origin: .init(x: 0, y: (frame.height - kIndicatorSize.height) / 2), size: size)
dot.snp.makeConstraints { make in
make.size.equalTo(index == 0 ? kIndicatorSize : kDotSize)
make.centerY.equalToSuperview()
make.left.equalToSuperview().inset(CGFloat(index) * (kDotSize.width + kSpacePerDot))
if index == totalPagesCount - 1 {
make.right.equalToSuperview()
}
}
else {
rect = .init(origin: .init(x: cgIndex * (size.width + space), y: 0), size: size)
}
dot.frame = rect
dot.backgroundColor = UIColor.blue.cgColor
dot.cornerRadius = kDotSize.height / 2
layer.addSublayer(dot)
dots.append(dot)
}
}
func prepareIndicator() {
indicator.backgroundColor = UIColor.red.cgColor
indicator.frame = .init(origin: .zero, size: kDotSize)
indicator.cornerRadius = kIndicatorSize.height / 2
indicator.frame = .init(origin: .init(x: 0, y: (frame.height - kIndicatorSize.height) / 2),
size: kIndicatorSize)
layer.addSublayer(indicator)
indicator.backgroundColor = UIColor.red
indicator.layer.cornerRadius = kIndicatorSize.height / 2
addSubview(indicator)
indicator.snp.makeConstraints { make in
make.left.equalToSuperview()
make.centerY.equalToSuperview()
make.size.equalTo(kIndicatorSize)
}
}
}
......@@ -79,8 +79,6 @@ class OnboardingPageController: UIPageViewController, UIScrollViewDelegate {
control.snp.makeConstraints { make in
make.top.equalToSuperview().inset(80)
make.left.equalToSuperview().inset(100)
make.width.equalTo(47)
make.height.equalTo(9)
}
#else
fatalError("Remove in release")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment