-
-
Save ricsantos/0afa4c3cbb80f7bf82a8a1c6651bed5a to your computer and use it in GitHub Desktop.
Apple Journal Calendar UI Demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ViewController.swift | |
// Journal-Calendar-Demo | |
// | |
// Created by Seb Vidal on 30/04/2024. | |
// | |
import UIKit | |
class ViewController: UIViewController { | |
// MARK: - init(nibName:bundle:) | |
override init(nibName: String?, bundle: Bundle?) { | |
super.init(nibName: nibName, bundle: bundle) | |
let button = UIButton(type: .system) | |
button.setTitle("Show Calendar", for: .normal) | |
button.translatesAutoresizingMaskIntoConstraints = false | |
button.addTarget(self, action: #selector(showAlertController), for: .touchUpInside) | |
view.addSubview(button) | |
NSLayoutConstraint.activate([ | |
button.centerXAnchor.constraint(equalTo: view.centerXAnchor), | |
button.centerYAnchor.constraint(equalTo: view.centerYAnchor) | |
]) | |
} | |
// MARK: - init(coder:) | |
required init?(coder: NSCoder) { | |
fatalError("init(coder:) has not been implemented") | |
} | |
// MARK: - Private Methods | |
@objc private func showAlertController(_ sender: UIButton) { | |
let selector = NSSelectorFromString("_setHeaderContentViewController:") | |
let headerContentViewController = CalendarViewController() | |
let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) | |
alertController.perform(selector, with: headerContentViewController) | |
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel) { _ in}) | |
present(alertController, animated: true) | |
} | |
} | |
class CalendarViewController: UIViewController { | |
// MARK: - Private Properties | |
private var calendarView: UICalendarView! | |
// MARK: - init(nibName:bundle:) | |
override init(nibName: String?, bundle: Bundle?) { | |
super.init(nibName: nibName, bundle: bundle) | |
calendarView = UICalendarView() | |
calendarView.translatesAutoresizingMaskIntoConstraints = false | |
view.addSubview(calendarView) | |
NSLayoutConstraint.activate([ | |
calendarView.topAnchor.constraint(equalTo: view.topAnchor), | |
calendarView.leadingAnchor.constraint(equalTo: view.leadingAnchor), | |
calendarView.trailingAnchor.constraint(equalTo: view.trailingAnchor), | |
calendarView.bottomAnchor.constraint(equalTo: view.bottomAnchor) | |
]) | |
} | |
// MARK: - init(coder:) | |
required init?(coder: NSCoder) { | |
fatalError("init(coder:) has not been implemented") | |
} | |
// MARK: - viewDidLayoutSubviews() | |
override func viewDidLayoutSubviews() { | |
super.viewDidLayoutSubviews() | |
let height = calendarView.intrinsicContentSize.height | |
preferredContentSize = CGSize(width: -1, height: height) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment