add dropdowns for page turning mode and background color
This commit is contained in:
@@ -17,17 +17,25 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
var images: [UIImage] = []
|
||||
var page = 0
|
||||
var mode = PageTurnMode.leftToRight
|
||||
|
||||
var leftTap: UITapGestureRecognizer!
|
||||
var rightTap: UITapGestureRecognizer!
|
||||
var topTap: UITapGestureRecognizer!
|
||||
|
||||
let topBarView = UIView()
|
||||
var isTopBarVisible = false
|
||||
let topBarLabel = UILabel()
|
||||
var topBarHeightConstraint: NSLayoutConstraint!
|
||||
|
||||
let pageTurnDropdownView = UIView()
|
||||
let pageTurnDropdownButton = UIButton()
|
||||
|
||||
let backgroundColorDropdownView = UIView()
|
||||
let backgroundColorDropdownButton = UIButton()
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
view.backgroundColor = .red
|
||||
view.backgroundColor = .white
|
||||
|
||||
setup()
|
||||
}
|
||||
@@ -100,6 +108,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
func setupTopBar() {
|
||||
topBarView.translatesAutoresizingMaskIntoConstraints = false
|
||||
topBarView.backgroundColor = UIColor.black.withAlphaComponent(0.8) // Or any style
|
||||
topBarView.isHidden = true
|
||||
view.addSubview(topBarView)
|
||||
|
||||
topBarHeightConstraint = topBarView.heightAnchor.constraint(equalToConstant: 0)
|
||||
@@ -110,6 +119,161 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
topBarView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
||||
topBarHeightConstraint,
|
||||
])
|
||||
|
||||
topBarLabel.text = "Menu"
|
||||
topBarLabel.textColor = .white
|
||||
topBarLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
topBarLabel.isHidden = true
|
||||
topBarView.addSubview(topBarLabel)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
topBarLabel.centerXAnchor.constraint(equalTo: topBarView.centerXAnchor),
|
||||
topBarLabel.centerYAnchor.constraint(equalTo: topBarView.centerYAnchor),
|
||||
])
|
||||
|
||||
setupBackgroundColorDropdown()
|
||||
setupPageTurnDropdown()
|
||||
}
|
||||
|
||||
func setupBackgroundColorDropdown() {
|
||||
// TODO: Find out how to acutally do UI and dropdowns with StackView
|
||||
backgroundColorDropdownButton.setTitle("Background color ▼", for: .normal)
|
||||
backgroundColorDropdownButton.setTitleColor(.white, for: .normal)
|
||||
backgroundColorDropdownButton.isHidden = true
|
||||
backgroundColorDropdownButton.translatesAutoresizingMaskIntoConstraints = false
|
||||
topBarView.addSubview(backgroundColorDropdownButton)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
backgroundColorDropdownButton.trailingAnchor.constraint(
|
||||
equalTo: topBarView.leadingAnchor, constant: 180),
|
||||
backgroundColorDropdownButton.centerYAnchor.constraint(
|
||||
equalTo: topBarView.centerYAnchor),
|
||||
])
|
||||
|
||||
backgroundColorDropdownButton.addTarget(
|
||||
self, action: #selector(toggleBackgroundColorDropdown), for: .touchUpInside)
|
||||
|
||||
backgroundColorDropdownView.backgroundColor = UIColor.darkGray
|
||||
backgroundColorDropdownView.translatesAutoresizingMaskIntoConstraints = false
|
||||
backgroundColorDropdownView.isHidden = true
|
||||
backgroundColorDropdownButton.addSubview(backgroundColorDropdownView)
|
||||
|
||||
let stackView = UIStackView()
|
||||
stackView.axis = .vertical
|
||||
stackView.spacing = 0
|
||||
stackView.distribution = .fillEqually // All buttons same height
|
||||
stackView.translatesAutoresizingMaskIntoConstraints = false
|
||||
backgroundColorDropdownView.addSubview(stackView)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
stackView.topAnchor.constraint(equalTo: backgroundColorDropdownView.topAnchor, constant: 32),
|
||||
stackView.bottomAnchor.constraint(equalTo: backgroundColorDropdownView.bottomAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: backgroundColorDropdownView.leadingAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: backgroundColorDropdownView.trailingAnchor),
|
||||
])
|
||||
|
||||
let titles = ["Option 1", "Option 2", "Option 3"]
|
||||
for title in titles {
|
||||
let button = UIButton(type: .system)
|
||||
button.setTitle(title, for: .normal)
|
||||
button.setTitleColor(.white, for: .normal)
|
||||
button.backgroundColor = .clear
|
||||
button.addTarget(self, action: #selector(handleBackgroundColorOption(_:)), for: .touchUpInside)
|
||||
stackView.addArrangedSubview(button)
|
||||
}
|
||||
}
|
||||
|
||||
func setupPageTurnDropdown() {
|
||||
pageTurnDropdownButton.setTitle("Page Turn Mode ▼", for: .normal)
|
||||
pageTurnDropdownButton.setTitleColor(.white, for: .normal)
|
||||
pageTurnDropdownButton.isHidden = true
|
||||
pageTurnDropdownButton.translatesAutoresizingMaskIntoConstraints = false
|
||||
topBarView.addSubview(pageTurnDropdownButton)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
pageTurnDropdownButton.trailingAnchor.constraint(
|
||||
equalTo: topBarView.trailingAnchor, constant: -16),
|
||||
pageTurnDropdownButton.centerYAnchor.constraint(equalTo: topBarView.centerYAnchor),
|
||||
])
|
||||
|
||||
pageTurnDropdownButton.addTarget(
|
||||
self, action: #selector(togglePageTurnDropdown), for: .touchUpInside)
|
||||
|
||||
pageTurnDropdownView.backgroundColor = UIColor.darkGray
|
||||
pageTurnDropdownView.translatesAutoresizingMaskIntoConstraints = false
|
||||
pageTurnDropdownView.isHidden = true
|
||||
view.addSubview(pageTurnDropdownView)
|
||||
|
||||
let pageTurnOptions = ["Left to right", "Right to left", "Scroll"]
|
||||
|
||||
var options: [UIButton] = []
|
||||
for option in pageTurnOptions {
|
||||
let button = UIButton(type: .system)
|
||||
button.setTitle(option, for: .normal)
|
||||
button.setTitleColor(.white, for: .normal)
|
||||
button.addTarget(self, action: #selector(handlePageTurnOption), for: .touchUpInside)
|
||||
|
||||
button.translatesAutoresizingMaskIntoConstraints = false
|
||||
pageTurnDropdownView.addSubview(button)
|
||||
|
||||
options.append(button)
|
||||
}
|
||||
|
||||
var constraints = [
|
||||
pageTurnDropdownView.topAnchor.constraint(equalTo: topBarView.bottomAnchor),
|
||||
pageTurnDropdownView.trailingAnchor.constraint(equalTo: topBarView.trailingAnchor),
|
||||
pageTurnDropdownView.widthAnchor.constraint(equalToConstant: 150),
|
||||
pageTurnDropdownView.heightAnchor.constraint(
|
||||
equalToConstant: CGFloat(options.count) * 32),
|
||||
]
|
||||
|
||||
for i in 0...options.count - 1 {
|
||||
constraints.append(
|
||||
options[i].topAnchor.constraint(
|
||||
equalTo: pageTurnDropdownView.topAnchor, constant: CGFloat(i) * 32))
|
||||
constraints.append(
|
||||
options[i].leadingAnchor.constraint(
|
||||
equalTo: pageTurnDropdownView.leadingAnchor, constant: 8))
|
||||
constraints.append(
|
||||
options[i].trailingAnchor.constraint(equalTo: pageTurnDropdownView.trailingAnchor))
|
||||
constraints.append(options[i].heightAnchor.constraint(equalToConstant: 32))
|
||||
}
|
||||
|
||||
NSLayoutConstraint.activate(constraints)
|
||||
}
|
||||
|
||||
@objc func handlePageTurnOption(_ sender: UIButton) {
|
||||
if let title = sender.currentTitle {
|
||||
switch title.lowercased() {
|
||||
case "left to right": mode = .leftToRight
|
||||
case "right to left": mode = .rightToLeft
|
||||
case "scroll": mode = .scroll
|
||||
default: break
|
||||
}
|
||||
}
|
||||
togglePageTurnDropdown()
|
||||
}
|
||||
|
||||
@objc func handleBackgroundColorOption(_ sender: UIButton) {
|
||||
if let title = sender.currentTitle {
|
||||
switch title.lowercased() {
|
||||
case "white": view.backgroundColor = .white
|
||||
case "gray": view.backgroundColor = .gray
|
||||
case "black": view.backgroundColor = .black
|
||||
case "red": view.backgroundColor = .red
|
||||
case "blue": view.backgroundColor = .blue
|
||||
default: break
|
||||
}
|
||||
}
|
||||
toggleBackgroundColorDropdown()
|
||||
}
|
||||
|
||||
@objc func togglePageTurnDropdown() {
|
||||
pageTurnDropdownView.isHidden.toggle()
|
||||
}
|
||||
|
||||
@objc func toggleBackgroundColorDropdown() {
|
||||
backgroundColorDropdownView.isHidden.toggle()
|
||||
}
|
||||
|
||||
func gestureRecognizer(
|
||||
@@ -125,9 +289,18 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
}
|
||||
|
||||
func toggleTopBar() {
|
||||
isTopBarVisible.toggle()
|
||||
topBarView.isHidden.toggle()
|
||||
|
||||
topBarHeightConstraint.constant = isTopBarVisible ? 60 : 0 // You can adjust height
|
||||
topBarHeightConstraint.constant = !topBarView.isHidden ? 60 : 0 // You can adjust height
|
||||
topBarLabel.isHidden = topBarView.isHidden
|
||||
|
||||
pageTurnDropdownButton.isHidden = topBarView.isHidden
|
||||
backgroundColorDropdownButton.isHidden = topBarView.isHidden
|
||||
|
||||
if topBarView.isHidden {
|
||||
pageTurnDropdownView.isHidden = true
|
||||
backgroundColorDropdownButton.isHidden = true
|
||||
}
|
||||
}
|
||||
|
||||
@objc func handleTopTap() {
|
||||
@@ -170,9 +343,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
||||
|
||||
func setupImageView() {
|
||||
imageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
imageView.contentMode = UIView.ContentMode.scaleAspectFit
|
||||
|
||||
imageView.clipsToBounds = true
|
||||
|
||||
view.addSubview(imageView)
|
||||
|
||||
Reference in New Issue
Block a user