1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //
- // ModalCenterPosition.swift
- // Presentr
- //
- // Created by Daniel Lozano on 7/6/16.
- // Copyright © 2016 danielozano. All rights reserved.
- //
- import UIKit
- /**
- Describes the presented presented view controller's center position. It is meant to be non-specific, but we can use the 'calculatePoint' method when we want to calculate the exact point by passing in the 'containerBounds' rect that only the presentation controller should be aware of.
- - Center: Center of the screen.
- - TopCenter: Center of the top half of the screen.
- - BottomCenter: Center of the bottom half of the screen.
- - Custom: A custom center position using a CGPoint which represents the center point of the presented view controller.
- - Custom: A custom center position to be calculated, using a CGPoint which represents the origin of the presented view controller.
- */
- public enum ModalCenterPosition {
- case center
- case topCenter
- case bottomCenter
- case custom(centerPoint: CGPoint)
- case customOrigin(origin: CGPoint)
- /**
- Calculates the exact position for the presented view controller center.
- - parameter containerBounds: The container bounds the controller is being presented in.
- - returns: CGPoint representing the presented view controller's center point.
- */
- func calculateCenterPoint(_ containerFrame: CGRect) -> CGPoint? {
- switch self {
- case .center:
- return CGPoint(x: containerFrame.origin.x + (containerFrame.width / 2),
- y: containerFrame.origin.y + (containerFrame.height / 2))
- case .topCenter:
- return CGPoint(x: containerFrame.origin.x + (containerFrame.width / 2),
- y: containerFrame.origin.y + (containerFrame.height * (1 / 4) - 1))
- case .bottomCenter:
- return CGPoint(x: containerFrame.origin.x + (containerFrame.width / 2),
- y: containerFrame.origin.y + (containerFrame.height * (3 / 4)))
- case .custom(let point):
- return point
- case .customOrigin(_):
- return nil
- }
- }
- func calculateOrigin() -> CGPoint? {
- switch self {
- case .customOrigin(let origin):
- return origin
- default:
- return nil
- }
- }
- }
|