No Description

UIViewExt.swift 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. //
  2. // UIViewExt.swift
  3. // ExtensionKit
  4. //
  5. // Created by FFIB on 2017/9/13.
  6. // Copyright © 2017年 FFIB. All rights reserved.
  7. //
  8. import UIKit
  9. /// MARK: Frame Extension
  10. extension UIView {
  11. public var x: CGFloat {
  12. get {
  13. return frame.origin.x
  14. }
  15. set {
  16. frame = CGRect(x: newValue, y: y, width: width, height: height)
  17. }
  18. }
  19. public var y: CGFloat {
  20. get {
  21. return frame.origin.y
  22. }
  23. set {
  24. frame = CGRect(x: x, y: newValue, width: width, height: height)
  25. }
  26. }
  27. public var width: CGFloat {
  28. get {
  29. return frame.width
  30. }
  31. set {
  32. frame = CGRect(x: x, y: y, width: newValue, height: height)
  33. }
  34. }
  35. public var height: CGFloat {
  36. get {
  37. return frame.height
  38. }
  39. set {
  40. frame = CGRect(x: x, y: y, width: width, height: newValue)
  41. }
  42. }
  43. public var size: CGSize {
  44. get {
  45. return frame.size
  46. }
  47. set {
  48. frame = CGRect(x: x, y: y, width: newValue.width, height: newValue.height)
  49. }
  50. }
  51. public var origin: CGPoint {
  52. get {
  53. return frame.origin
  54. }
  55. set {
  56. frame = CGRect(x: origin.x, y: origin.y, width: width, height: height)
  57. }
  58. }
  59. }
  60. /// MARK: Layer Extension
  61. extension UIView {
  62. @IBInspectable public var borderWidth: CGFloat {
  63. get {
  64. return self.layer.borderWidth
  65. }
  66. set {
  67. self.layer.borderWidth = newValue
  68. self.layer.borderColor = UIColor.lightGray.cgColor
  69. }
  70. }
  71. @IBInspectable public var cornerRadius: CGFloat {
  72. get {
  73. return self.layer.cornerRadius
  74. }
  75. set {
  76. self.layer.masksToBounds = true
  77. self.layer.cornerRadius = newValue
  78. }
  79. }
  80. @IBInspectable public var borderColor: UIColor? {
  81. get {
  82. guard let color = self.layer.borderColor else {
  83. return nil
  84. }
  85. return UIColor(cgColor: color)
  86. }
  87. set {
  88. if let color = newValue {
  89. self.layer.borderColor = color.cgColor
  90. }
  91. }
  92. }
  93. @IBInspectable
  94. public var shadowColor: UIColor? {
  95. get {
  96. guard let color = layer.shadowColor else {
  97. return nil
  98. }
  99. return UIColor(cgColor: color)
  100. }
  101. set {
  102. if let color = newValue {
  103. layer.shadowColor = color.cgColor
  104. }
  105. }
  106. }
  107. @IBInspectable
  108. public var shadowOffset: CGSize {
  109. get {
  110. return layer.shadowOffset
  111. }
  112. set {
  113. layer.shadowOffset = newValue
  114. }
  115. }
  116. @IBInspectable
  117. public var shadowOpacity: Float {
  118. get {
  119. return layer.shadowOpacity
  120. }
  121. set {
  122. layer.shadowOpacity = newValue
  123. }
  124. }
  125. }
  126. /// MARK: custom attribute
  127. extension UIView {
  128. public var screenshot: UIImage? {
  129. UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, UIScreen.main.scale)
  130. defer {
  131. UIGraphicsEndImageContext()
  132. }
  133. guard let content = UIGraphicsGetCurrentContext() else {
  134. return nil
  135. }
  136. layer.render(in: content)
  137. return UIGraphicsGetImageFromCurrentImageContext()
  138. }
  139. public var visiable: Bool {
  140. return !isHidden && alpha > 0 && window != nil
  141. }
  142. }
  143. extension UIView {
  144. func getSuperViewController() -> UIViewController? {
  145. var nr = next
  146. while let r = nr {
  147. if let vc = r as? UIViewController { return vc }
  148. nr = r.next
  149. }
  150. return nil
  151. }
  152. }