123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- //
- // Created by Jake Lin on 11/18/15.
- // Copyright © 2015 IBAnimatable. All rights reserved.
- //
- import UIKit
- public protocol PaddingDesignable: class {
- /**
- `padding-left`
- */
- var paddingLeft: CGFloat { get set }
- /**
- `padding-right`
- */
- var paddingRight: CGFloat { get set }
- /**
- `padding-left` and `padding-right`
- */
- var paddingSide: CGFloat { get set }
- }
- public extension PaddingDesignable where Self: UITextField {
- func paddedRect(forBounds bounds: CGRect) -> CGRect {
- if paddingSide.isNaN && paddingLeft.isNaN && paddingRight.isNaN {
- return bounds
- }
- return bounds.inset(by: paddingInsets)
- }
- private var paddingInsets: UIEdgeInsets {
- if paddingSide.isNaN {
- return insets(left: paddingLeft, right: paddingRight)
- } else {
- return sideInsets(padding: paddingSide)
- }
- }
- private func sideInsets(padding: CGFloat) -> UIEdgeInsets {
- return UIEdgeInsets(top: 0, left: padding, bottom: 0, right: padding)
- }
- private func insets(left: CGFloat, right: CGFloat) -> UIEdgeInsets {
- let l = left.isNaN ? 0 : left
- let r = right.isNaN ? 0 : right
- return UIEdgeInsets(top: 0, left: l, bottom: 0, right: r)
- }
- }
|