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,854评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 1.NSTimer //暂停if ([timer isValid]) {[timer setFireDate:[N...
    俊月阅读 1,363评论 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,861评论 1 10
  • 一个能控制情绪的人,才是最有教养的人。有一些人,情绪上来,很容易做出一些伤害他人的事,还觉得自己的情绪没什么,这是...
    且试风夕阅读 183评论 0 3