暫無描述

UIViewExt.swift 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. //
  2. // UIViewExt.swift
  3. // PaiaiUIKit
  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. }
  52. /// MARK: Layer Extension
  53. extension UIView {
  54. @IBInspectable public var borderWidth: CGFloat {
  55. get {
  56. return self.layer.borderWidth
  57. }
  58. set {
  59. self.layer.borderWidth = newValue
  60. self.layer.borderColor = UIColor.lightGray.cgColor
  61. }
  62. }
  63. @IBInspectable public var cornerRadius: CGFloat {
  64. get {
  65. return self.layer.cornerRadius
  66. }
  67. set {
  68. self.layer.masksToBounds = true
  69. self.layer.cornerRadius = newValue
  70. }
  71. }
  72. @IBInspectable public var borderColor: UIColor? {
  73. get {
  74. guard let color = self.layer.borderColor else {
  75. return nil
  76. }
  77. return UIColor(cgColor: color)
  78. }
  79. set {
  80. if let color = newValue {
  81. self.layer.borderColor = color.cgColor
  82. }
  83. }
  84. }
  85. @IBInspectable
  86. public var shadowColor: UIColor? {
  87. get {
  88. guard let color = layer.shadowColor else {
  89. return nil
  90. }
  91. return UIColor(cgColor: color)
  92. }
  93. set {
  94. if let color = newValue {
  95. layer.shadowColor = color.cgColor
  96. }
  97. }
  98. }
  99. @IBInspectable
  100. public var shadowOffset: CGSize {
  101. get {
  102. return layer.shadowOffset
  103. }
  104. set {
  105. layer.shadowOffset = newValue
  106. }
  107. }
  108. @IBInspectable
  109. public var shadowOpacity: Float {
  110. get {
  111. return layer.shadowOpacity
  112. }
  113. set {
  114. layer.shadowOpacity = newValue
  115. }
  116. }
  117. }
  118. /// MARK: custom attribute
  119. extension UIView {
  120. public var screenshot: UIImage? {
  121. UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, UIScreen.main.scale)
  122. defer {
  123. UIGraphicsEndImageContext()
  124. }
  125. guard let content = UIGraphicsGetCurrentContext() else {
  126. return nil
  127. }
  128. layer.render(in: content)
  129. return UIGraphicsGetImageFromCurrentImageContext()
  130. }
  131. public var visiable: Bool {
  132. return !isHidden && alpha > 0 && window != nil
  133. }
  134. }
  135. extension UIView {
  136. func getSuperViewController() -> UIViewController? {
  137. var nextResp = next
  138. while let resp = nextResp {
  139. if let vc = resp as? UIViewController { return vc }
  140. nextResp = resp.next
  141. }
  142. return nil
  143. }
  144. }