HelperFunctions.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // HelperFunctions.swift
  3. // ManualLayout
  4. //
  5. // Created by Baris Sencan on 26/02/15.
  6. // Copyright (c) 2015 Baris Sencan. All rights reserved.
  7. //
  8. import UIKit
  9. internal func snapToPixel(pointCoordinate coordinate: CGFloat) -> CGFloat {
  10. let screenScale = UIScreen.main.scale
  11. return round(coordinate * screenScale) / screenScale
  12. }
  13. //MARK: - Insetting
  14. public func inset(_ view: UIView, amount: CGFloat) -> CGRect {
  15. return inset(view.frame, amount: amount)
  16. }
  17. public func inset(_ layer: CALayer, amount: CGFloat) -> CGRect {
  18. return inset(layer.frame, amount: amount)
  19. }
  20. public func inset(_ rect: CGRect, amount: CGFloat) -> CGRect {
  21. return rect.insetBy(dx: amount, dy: amount)
  22. }
  23. public func inset(_ view: UIView, dx: CGFloat, dy: CGFloat) -> CGRect {
  24. return inset(view.frame, dx: dx, dy: dy)
  25. }
  26. public func inset(_ layer: CALayer, dx: CGFloat, dy: CGFloat) -> CGRect {
  27. return inset(layer.frame, dx: dx, dy: dy)
  28. }
  29. public func inset(_ rect: CGRect, dx: CGFloat, dy: CGFloat) -> CGRect {
  30. return rect.insetBy(dx: dx, dy: dy)
  31. }
  32. public func inset(_ view: UIView, top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> CGRect {
  33. return inset(view.frame, top: top, left: left, bottom: bottom, right: right)
  34. }
  35. public func inset(_ layer: CALayer, top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> CGRect {
  36. return inset(layer.frame, top: top, left: left, bottom: bottom, right: right)
  37. }
  38. public func inset(_ rect: CGRect, top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> CGRect {
  39. return CGRect(
  40. origin: offset(rect.origin, dx: left, dy: top),
  41. size: inset(rect.size, top: top, left: left, bottom: bottom, right: right))
  42. }
  43. public func inset(_ size: CGSize, amount: CGFloat) -> CGSize {
  44. return inset(size, dx: amount, dy: amount)
  45. }
  46. public func inset(_ size: CGSize, dx: CGFloat, dy: CGFloat) -> CGSize {
  47. return inset(size, top: dy, left: dx, bottom: dy, right: dx)
  48. }
  49. public func inset(_ size: CGSize, top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> CGSize {
  50. return CGSize(
  51. width: size.width - left - right,
  52. height: size.height - top - bottom)
  53. }
  54. // MARK: - Offsetting
  55. public func offset(_ view: UIView, amount: CGFloat) -> CGRect {
  56. return offset(view.frame, amount: amount)
  57. }
  58. public func offset(_ layer: CALayer, amount: CGFloat) -> CGRect {
  59. return offset(layer.frame, amount: amount)
  60. }
  61. public func offset(_ rect: CGRect, amount: CGFloat) -> CGRect {
  62. return rect.offsetBy(dx: amount, dy: amount)
  63. }
  64. public func offset(_ view: UIView, dx: CGFloat, dy: CGFloat) -> CGRect {
  65. return offset(view.frame, dx: dx, dy: dy)
  66. }
  67. public func offset(_ layer: CALayer, dx: CGFloat, dy: CGFloat) -> CGRect {
  68. return offset(layer.frame, dx: dx, dy: dy)
  69. }
  70. public func offset(_ rect: CGRect, dx: CGFloat, dy: CGFloat) -> CGRect {
  71. return rect.offsetBy(dx: dx, dy: dy)
  72. }
  73. public func offset(_ point: CGPoint, amount: CGFloat) -> CGPoint {
  74. return offset(point, dx: amount, dy: amount)
  75. }
  76. public func offset(_ point: CGPoint, dx: CGFloat, dy: CGFloat) -> CGPoint {
  77. return CGPoint(x: point.x + dx, y: point.y + dy)
  78. }