UIKit
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if 条件 { return 高さ } else { return UITableView.automaticDimension } }
override func viewDidLoad() { ... self.overrideUserInterfaceStyle = .light } 上記コードだと、該当ViewControllerはずっとライトモードになる。逆に= .darkにするとずっとダークモードになる。
下記の例は、先に画像を2倍に拡大して、次左に90度回転して、更に右に180度回転して、最後元に戻るアニメーションです。 let scaleTransform = CGAffineTransform(scaleX: 2, y: 2) let leftRotateTransform = scaleTransform.concatenating(CGAffineT…
class ViewController: UIViewController { let searchController = UISearchController() override func viewDidLoad() { super.viewDidLoad() searchController.searchResultsUpdater = self navigationItem.searchController = searchController } } exte…
iOS 15+では、新しいSafariブックマークのような画面半分表示のModal Viewが作れるようになりました。 let modalVC = ModalViewController() let modalNC = UINavigationController(rootViewController: modalVC) if #available(iOS 15.0, *) { if let sheet…
XcodeでUIKitのアプリを作成する。 Main.storyboardを削除する。 ProjectファイルのTarget -> General -> Deployment Info -> Main Interfaceを空欄にする。 Info.plist -> Application Scene Manifest -> Scene Configuration -> Application Session Role …
iPadでActionSheetを正しく呼び出す元の近くで表示させるため、popoverPresentationControllerのsourceViewとsourceRectの設定が必要です。 例: @IBAction func dataPressed(_ sender: UIButton) { let ac = UIAlertController(title: nil, message: nil, p…
最終効果: 検索欄で検索文字を入力する時表示内容は動的に変更する。 Memo struct Memo: Hashable { var id = UUID().uuidString var title = "" var detail = "" var editTime = Date() func hash(into hasher: inout Hasher) { hasher.combine(id) } } Me…
override func viewDidLoad() { super.viewDidLoad() ... navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareTapped)) } @objc func shareTapped() { let avc = UIActivityViewCont…
import UIKit import SafariServices extension UIViewController { func presentSafariVC(with url: URL) { let safariVC = SFSafariViewController(url: url) present(safariVC, animated: true) } }
func add(childViewController: UIViewController, to containerView: UIView) { self.addChild(childViewController) containerView.addSubview(childViewController.view) childViewController.view.frame = containerView.bounds childViewController.did…
UIViewControllerにshowLoadingViewとdismissLoadingViewという二つFunctionを拡張する。 import UIKit fileprivate var loadingView: UIView! extension UIViewController { func showLoadingView() { loadingView = UIView(frame: view.bounds) view.addSu…
例:テキストボックスtxtPlayerをクリックすると、UIPickerViewが表示される。「完了」ボタンを押すと選択された内容がテキストボックスに表示される。 class PlayerViewController: UIViewController { @IBOutlet var txtPlayer: UITextField! let pickerVi…
サンプル:送信側は受信側にテーブルリロードを要求する。 Notification名前定義: extension NSNotification.Name { static let reload = Self.init("reload") } 送信側: NotificationCenter.default.post(name: .reload, object: nil) 受信側: override …
サンプル:alert表示のInputboxで現在のViewControllerのname属性を修正するロジック let ac = UIAlertController(title: "New Name", message: "", preferredStyle: .alert) let done = UIAlertAction(title: "Done", style: .default) { [weak self, weak …
1、Command+Nで新規ファイルウィンドウを開く、中にUser Interface下のViewを新規する。新規したのはxibファイル。xibファイルの編集方法はStoryboardと大体同じ。 2、UIViewを継承して自分のViewクラスを作成、xibファイルを自分のサブビューとして追加す…
Extension定義 extension UIViewController { func presentWithFullScreen<T: UIViewController>(storyboardId: String, handler: ((T) -> Void)?){ let vc = self.storyboard?.instantiateViewController(identifier: storyboardId) as! T if let wrappedHandler = handler { wra</t:>…
if let url = URL(string: "https://cecilma2018.blogspot.com") { UIApplication.shared.open(url, options: [:]) }