The UIPickerView allows you to put your own UIView in each cell and put whatever you want in there. Here is how you do it!
Enjoy this info? Visit my Patreon page to support educators and artists.
My YouTube Channel
Need help with SwiftUI? Check out my products at: Big Mountain Studio Website
Showing posts with label UIPickerViewDataSource. Show all posts
Showing posts with label UIPickerViewDataSource. Show all posts
Monday, May 1, 2017
Saturday, February 25, 2017
Side Scrolling UIPIckerView
The scrolling temperature is a UIPickerView rotated on its side. Here is what is happening here:
- Rotate the UIPickerView 90°
- Rotate the view inside each row 90°
- Reverse the data populated into the picker
- Resize the rotated picker so it extends beyond the view. This makes the horizontal scroller fill the entire width
Here's the code:
class ViewController: UIViewController {
@IBOutlet weak var picker: UIPickerView!
var data: [String] = ["60°", "61°", "62°", "63°", "64°", "65°","66°", "67°", "65°", "63°", "59°", "57°"]
var times: [String] = ["9:00", "10:00", "11:00", "12:00", "13:00", "14:00","15:00", "16:00", "17:00", "18:00", "19:00", "20:00"]
override func viewDidLoad() {
super.viewDidLoad()
picker.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))
picker.frame = CGRect(x: -100, y: view.frame.height - 120, width: view.frame.width + 200, height: 100)
data.reverse()
times.reverse()
picker.dataSource = self
picker.delegate = self
picker.selectRow(data.count - 3, inComponent: 0, animated: false)
}
override func viewDidLayoutSubviews() {
for subview in picker.subviews{
if subview.frame.origin.y != 0{
subview.isHidden = true
}
}
}
}
extension ViewController: UIPickerViewDataSource {
// Like number of columns
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.count
}
}
extension ViewController: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 100
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
let label = UILabel(frame: CGRect(x: 5, y: 0, width: view.frame.width, height: view.frame.height))
label.text = data[row]
label.textAlignment = .center
label.font = UIFont.systemFont(ofSize: 45, weight: UIFontWeightThin)
view.addSubview(label)
let time = UILabel(frame: CGRect(x: 0, y: 85, width: view.frame.width, height: 15))
time.text = times[row]
time.textAlignment = .center
time.font = UIFont.systemFont(ofSize: 14, weight: UIFontWeightThin)
view.addSubview(time)
view.transform = CGAffineTransform(rotationAngle: -90 * (.pi/180))
return view
}
}
Wednesday, February 8, 2017
Basic UIPickerView Template
I am using extensions here just so you can see which functions belong to which protocols.
(Swift 3)
class ViewController: UIViewController {
@IBOutlet weak var picker: UIPickerView!
var data: [String] = ["Row 1", "Row 2", "Row 3"]
override func viewDidLoad() {
super.viewDidLoad()
picker.dataSource = self
picker.delegate = self
}
}
extension ViewController: UIPickerViewDataSource {
// Like number of columns
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.count
}
}
extension ViewController: UIPickerViewDelegate {
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
}
(Swift 3)
Subscribe to:
Posts (Atom)
SwiftUI Search & Filter with Combine - Part 3 (iOS, Xcode 13, SwiftUI, 2...
In part 3 of the Searchable video series, I show you how to use Combine in #SwiftUI for the search and filter logic connected to the searcha...
-
This post visually shows the stack view's Alignment and Distribution property settings. There is also a section on resolving auto layou...
-
I couldn't find a tutorial on this so this is my documented journey into trying to figure out how to implement OAuthSwift into an iOS p...
-
I had someone ask about aligning text within a TextField view and I didn't have a page in my book for this but added one just now. ...
