swift4」カテゴリーアーカイブ

Subscripts・Sets・UITableViewDataSource・Properties

平成30年5月3日(木曜日)

apple Subscripts

apple Collection Types

UITableViewを軽量化する!(Swift版)

Swiftでは関数も型を持ったオブジェクトなのでプロパティとして代入することができます。
その他、プロパティ監視
プロパティ値が設定される前と設定された後に処理を行うことができます。この機能をプロパティ監視と呼びます。
値が変更される前に、willSet()が呼ばれます。また、値が変更された後に、didSet()が呼ばれます。
CocoaやUIKitを使ったアプリケーションの開発では、デリゲートパターンを多用します。デリゲートパターンは、イベントに応じて他のオブジェクトにイベントを通知したり処理を委譲するパターンですが、プロパティ監視を使うと、値の変更に応じたイベントの通知を簡単に実装することができます。
プロパティ

PopoverⅢ(UIPresentationController)

平成30年4月29日(日曜日)

再再掲!!リンク完動!! Updated to Swift 4.
図も交えた理解しやすい説明(英文)
(dismissal animation)
Using custom interactive transitions to dismiss a modal
プロジェクト名 InteractiveModal
Using custom interactive transitions to dismiss a modal
のUINavigationController版↓
ModalNavigationControllerPractice(swift3.3)
引っ張って閉じることができるモーダルを実装する (UINavigationControllerの場合)
「それはUINavigationControllerにはPan Gesture Recognizerをアタッチすることができないことです。
そこで、UINavigationControllerの子のViewControllerでPan Gestureをハンドリングし、UINavigationControllerに伝播する方法で目的を達成できましたのでコード片を残しておきたいと思います。」

iOSのカスタム画面遷移64種類を試せるサンプルコードを公開しましたAdd Star

UIKitにある機能でWebで見かけるようなUI達を作る

interactionControllerForDismissal(UIPercentDrivenInteractiveTransition)

平成30年4月27日(金曜日)

apple(遷移にインタラクティブ性を追加する)
トランジションアニメーションをカスタマイズする

UIPercentDrivenInteractiveTransition オブジェクトは、既存のアニメーターオブジェクトと連携してアニメーションのタイミングを制御します。
割合主導型のインタラクティブアニメーターを設定する

// Add the gesture recognizer to the container view.
UIView* container = [transitionContext containerView];
[container addGestureRecog

平成30年4月26日(木曜日)

前提
① Delegate内で定義!!

extension ViewController: UIViewControllerTransitioningDelegate {
func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
return interactor.hasStarted ? interactor : nil
}
}

② class作成!!

class Interactor: UIPercentDrivenInteractiveTransition {
var hasStarted = false
var shouldFinish = false
}
/*
open func update(_ percentComplete: CGFloat)

open func cancel()

open func finish()
*/

③ 移動量計算、GestureRecognizer内でinteractor.update(progress)してOK!!
@IBAction func handleGesture(_ sender: UIPanGestureRecognizer) {

let percentThreshold:CGFloat = 0.3

// convert y-position to downward pull progress (percentage)
let translation = sender.translation(in: view)
let verticalMovement = translation.y / view.bounds.height
let downwardMovement = fmaxf(Float(verticalMovement), 0.0)
let downwardMovementPercent = fminf(downwardMovement, 1.0)
let progress = CGFloat(downwardMovementPercent)

guard let interactor = interactor else { return }

switch sender.state {
case .began:
interactor.hasStarted = true
dismiss(animated: true, completion: nil)
case .changed:
interactor.shouldFinish = progress > percentThreshold
interactor.update(progress)
case .cancelled:
interactor.hasStarted = false
interactor.cancel()
case .ended:
interactor.hasStarted = false
interactor.shouldFinish
? interactor.finish()
: interactor.cancel()
default:
break
}
}
}

使い方
let interactor = Interactor()
作成し、destinationViewControllerに渡す。

class ViewController: UIViewController {

let interactor = Interactor()

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationViewController = segue.destination as? ModalViewController {
destinationViewController.transitioningDelegate = self
destinationViewController.interactor = interactor
}
}

}

追加(参考)
func dismiss(animated flag: Bool,
completion: (() -> Void)? = nil)

(Dismisses the view controller that was presented modally by the view controller.)
(ビューコントローラによってモーダルに表示されたビューコントローラを閉じます)

@IBAction func toSecondVew(){
performSegue(withIdentifier: "toSecond", sender: nil)
}

@IBAction func back(){
self.dismiss(animated: true, completion: nil)
}

UIPresentationController(Summary)

平成30年4月21日(土曜日)

カスタム表示の場合、独自の Presentation Controller を用意して、表示された View Controller にカスタムの外観を付与できます。Presentation Controller は、View Controller とそのコンテンツとは別個のカスタムクロムを管理できます。たとえば、View Controller のビューの背後に配置された淡色表示のビューは、Presentation Controller により管理されます。

View Controller の表示スタイルを UIModalPresentationCustom に設定し、適切な遷移デリゲートを提供すると、UIKit はカスタム Presentation Controller 代わりに使用します。

カスタムビューは、presentationTransitionWillBegin メソッドを使用して画面にアニメーション化します。このメソッドでは、カスタムビューを設定し、それらをコンテナビューに追加します。表示される View Controller か表示中の View Controller のトランジションコーディネータを使用してアニメーションを作成します。

。アニメーターオブジェクトは、表示されるViewControllerを、frameOfPresentedViewInContainerViewメソッドから返す四角形フレームにアニメーション化する責任を負っています。

UIPresentationController{
override func containerViewWillLayoutSubviews() {
presentedView?.frame = frameOfPresentedViewInContainerView
}

}

View Controller を表示するときは、そのビューをコンテナビューのサブビューとして追加します。コンテナビューは、ウィンドウまたは通常のビューのことがありますが、常にアニメーションを実行するように設定されています



カスタムアニメーションを使用して View Controller を表示する

カスタムアニメーションを使用して View Controller を表示するには、既存の View Controller のアクションメソッドで次の手順を実行します。

表示する View Controller を作成します。

カスタム遷移デリゲートオブジェクトを作成し、View Controller の transitioningDelegate(UIViewControllerAnimatedTransitioning) プロパティに割り当てます。

遷移デリゲートのメソッドは、カスタムアニメータオブジェクトを作成して、求められたときに返す必要があります。
presentViewController:animated:completion: メソッドを呼び出して View Controller を表示します。
presentViewController:animated:completion: メソッドを呼び出すと、UIKit は表示プロセスを初期化します。表示は、次の実行ループ反復時に開始され、カスタムアニメーターが completeTransition: メソッドを呼び出すまで続きます。インタラクティブ遷移では、遷移の進行中にタッチイベントを処理することができますが、非インタラクティブ遷移はアニメーターオブジェクトにより指定された持続期間に実行されます。


The best way to learn UIViewControllerAnimatedTransitioning

平成30年4月15日(日曜日)

検索KEY WORD
UIPresentationController up down left right

Example of how to use presentation, animation & interaction controllers w/ custom segues to create a slide-in modal menu which partially covers presenting view.

「プレゼンテーション、アニメーション、およびインタラクションコントローラを使用してカスタムセグを使用して、プレゼンテーションビューを部分的にカバーするスライドインモーダルメニューを作成する方法の例。」

MrAlek/hamburger.swift
末尾にリンクあり(SWIFT4)ソースのみ 使い方不明 ERROR無し
SWIFT 4 版


swift2 バージョン(UINavigationControllerを使うときの参考)
UIViewControllerAnimatedTransitioningを使って画面遷移アニメーションを作る


平成30年4月14日(土曜日)

[iOS] 遷移元の画像が遷移先にズームイン・アウトするような画面遷移(UITableView及びUICollectionViewの場合)
プロジェクト名 CustomTransitionSample01 動作確認 swift3.3

平成30年4月12日(木曜日)

★ソースのみシンプル(swift4 convert ok!! 今後組み込み後 要動作確認)
prepare segueを設定し、動作確認。
@stingerstinger/SDPresentationManager.swift
ソース名:SDPresentationManager
プロジェクト名 singleview2


英文、シンプルでわかりやすい説明。プロジェクト無し、ソース有り
swift4 要convert
Custom View Controller Transitions

平成30年4月11日(水曜日)

swift4 完動!!
iOS Animation Tutorial: Custom View Controller Presentation Transitions
final → BeginnerCook

平成30年4月7日(日曜日)

再掲!!リンク完動!! Updated to Swift 4.
図も交えた理解しやすい説明(英文)
(dismissal animation)
Using custom interactive transitions to dismiss a modal
プロジェクト名 InteractiveModal

もう一点
Create an interactive slide-out menu using Custom View Controller Transitions
InteractiveSlideOutMenu-master
InteractiveSlideOutMenu-MenuRightSide有り(但しswift2 要コンバート)
Updated for Swift 3.1

SWIFT 4 Tutorial

平成30年4月11日(水曜日)

検索keyword [swift 4 tutorial japanese 又は、swift 4 tutorial]
にて、様々有り。

要チェック!! mapkit
SWIFT 2
http://iOS Tutorial: How to search for location and display results using Apple’s MapKit

Ian on February 11, 2018 at 3:23 pm
Swift 4 Version of LocationSearchTable: https://gist.github.com/iannase/b509f188586f72941ba5e47ce51b0373
SWIFT 4