swift UIView+Additions

用習慣了OC的工具類UIView+Additions,之前寫代碼的時候一般直接寫view.top或者view.height現在沒有了就得寫成view.frame.origin.y或者view.frame.size.height這..真的讓人很奔潰..

本來想找個swift版本的,但是沒有找到,所以決定自己寫一個.

首先要創建個UIView+Additions類...我以為創建Swift File像Objective-C File文件一樣也是可以選擇擴展類的,會自動生成中間的+號,事實證明我想多了..這個+加應該是只能自己打上去了..

就是選這個,點完之后不要懷疑人生,取個名字創建就可以了

創建完也不要懷疑人生,里面就是很干凈的...

下面就是代碼了,其實都是非常簡單的set get方法, 但是在開發的時候可以節省很多時間,而且代碼也不會看著那么的腫脹...

import Foundation

import UIKit

extension UIView {

public var left: CGFloat{

get{

return self.frame.origin.x

}

set{

var frame = self.frame

frame.origin.x = newValue

self.frame = frame

}

}

public var top: CGFloat{

get{

return self.frame.origin.y

}

set{

var frame = self.frame

frame.origin.y = newValue

self.frame = frame

}

}

public var right: CGFloat{

get{

return self.frame.origin.x + self.frame.size.width;

}

set{

var frame = self.frame

frame.origin.x = newValue - frame.size.width;

self.frame = frame

}

}

public var bottom: CGFloat{

get{

return self.frame.origin.y + self.frame.size.height;

}

set{

var frame = self.frame

frame.origin.y = newValue - frame.size.height;

self.frame = frame

}

}

public var centerX: CGFloat{

get{

return self.center.x;

}

set{

var center = self.center

center.x = newValue

self.center = center

}

}

public var centerY: CGFloat{

get{

return self.center.y;

}

set{

var center = self.center

center.y = newValue

self.center = center

}

}

public var width: CGFloat{

get{

return self.frame.size.width;

}

set{

var frame = self.frame

frame.size.width = newValue;

self.frame = frame

}

}

public var height: CGFloat{

get{

return self.frame.size.height;

}

set{

var frame = self.frame

frame.size.height = newValue;

self.frame = frame

}

}

public var origin: CGPoint{

get{

return self.frame.origin

}

set{

var frame = self.frame

frame.origin = newValue;

self.frame = frame

}

}

public var size: CGSize{

get{

return self.frame.size

}

set{

var frame = self.frame

frame.size = newValue;

self.frame = frame

}

}

func removeAllSubviews(){

while self.subviews.count > 0 {

let subView = self.subviews.first

subView?.removeFromSuperview()

}

}

}

最后,如果你的view是使用SnapKit設置的約束,那同一個view就盡量都用SnapKit,不然也是容易出錯的,因為使用SnapKit約束后并不能立刻反應到frame上,這個問題在oc中使用過Masory應該也都知道.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,857評論 0 6
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • 1.NSTimer //暫停if ([timer isValid]) {[timer setFireDate:[N...
    俊月閱讀 1,373評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,874評論 1 10
  • 一個能控制情緒的人,才是最有教養的人。有一些人,情緒上來,很容易做出一些傷害他人的事,還覺得自己的情緒沒什么,這是...
    且試風夕閱讀 187評論 0 3