Swift学习之UIView延展添加新属性left,right,top,bottom,width,height,centerx,centery

import Foundation

import UIKit

import CoreGraphics

extension UIView{

var left:CGFloat{

set{

var frame = self.frame

frame.origin.x = newValue

self.frame = frame

}

get{

return self.frame.origin.x

}

}

var top:CGFloat{

set{

var frame = self.frame

frame.origin.y = newValue

self.frame = frame

}

get{

return self.frame.origin.y

}

}

var right:CGFloat{

set{

var frame = self.frame

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

self.frame = frame

}

get{

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

}

}

var bottom:CGFloat{

set{

var frame = self.frame

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

self.frame = frame

}

get{

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

}

}

var centerX:CGFloat{

set{

self.center = CGPoint(x:newValue, y:self.center.x)

}

get{

return self.center.x

}

}

var centerY:CGFloat{

set{

self.center = CGPoint(x:self.center.x, y:newValue)

}

get{

return self.center.y

}

}

var width:CGFloat{

set{

var frame = self.frame

frame.size.width = newValue

self.frame = frame

}

get{

return self.frame.size.width

}

}

var height:CGFloat{

set{

var frame = self.frame

frame.size.height = newValue

self.frame = frame

}

get{

return self.frame.size.height

}

}

}

时间: 2024-10-05 04:19:36

Swift学习之UIView延展添加新属性left,right,top,bottom,width,height,centerx,centery的相关文章

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

大家应该知道如何设置一个view组件的位置把,是的,如下: view.frame=CGRectMake(x,y,width,height);//设置组件的x,y坐标,设置组件的宽度高度... 如果我单独要设置坐标或者宽度高度,得这样: view.frame.size.width=100; view.frame.size.height=100; 如果你想偷个懒,比如: view.frame.size=(CGSize){200,200};//这个语句会报错,因为无法对size赋值 通过上面的代码,大

Swift学习笔记(二):属性、元组

一.属性的getter和setter //设置计算型属性:其并不真正的存储值,而是每次通过其他值计算得来 var subtotal: Double { //getter:通过total.taxPct计算获得total的值 get { return total / (taxPct + 1) } //setter:更新的是相关的值(比如此处基于newSubtotal来设置total.taxPct的值) set(newSubtotal) { //... } } 二.元组 | Tuples //创建一个

vue添加新属性不更新原因

一: 在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去: 当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新.如下代码: <!DOCTYPE html><html><head><meta charset="utf-8"><title>vue $set</title><script

swift学习第十四天:属性监听器

监听属性的改变 在OC中我们可以重写set方法来监听属性的改变 Swift中可以通过属性观察者来监听和响应属性值的变化 通常是监听存储属性和类属性的改变.(对于计算属性,我们不需要定义属性观察者,因为我们可以在计算属性的setter中直接观察并响应这种值的变化) 我们通过设置以下观察方法来定义观察者 willSet:在属性值被存储之前设置.此时新属性值作为一个常量参数被传入.该参数名默认为newValue,我们可以自己定义该参数名 didSet:在新属性值被存储后立即调用.与willSet相同,

swift学习第十二天:类的属性定义

类的属性介绍 Swift中类的属性有多种 存储属性:存储实例的常量和变量 计算属性:通过某种方式计算出来的属性 类属性:与整个类自身相关的属性 存储属性 存储属性是最简单的属性,它作为类实例的一部分,用于存储常量和变量 可以给存储属性提供一个默认值,也可以在初始化方法中对其进行初始化,而且必须得有默认值,否则会报错 下面是存储属性的写法 age和name都是存储属性,用来记录该学生的年龄和姓名 chineseScore和mathScore也是存储属性,用来记录该学生的语文分数和数学分数 clas

Django学习(七)---添加新文章页面

在template中添加add_article.html页面 (form  input)请求方法使用post 这个页面涉及到了两个响应函数 1)显示页面的响应函数  2)表单提交的响应函数 add_article.html如下: <!DOCTYPE html> <html> <head> <title>增加新文章</title> </head> <body> <form action="{% url 'bl

十三:UIView中frame的封装(方便使用x,y,width,height,center,size等)

新建一个继承自UIView的扩展类 在.h文件中写代码: 1 @property (assign, nonatomic)CGSize size; 2 @property (assign, nonatomic)CGFloat width; 3 @property (assign, nonatomic)CGFloat height; 4 @property (assign, nonatomic)CGFloat x; 5 @property (assign, nonatomic)CGFloat y;

iOS学习之UIView中的clipsTobounds属性及扩展

在一个视图中动态添加一个子视图,并在子视图中添加一个UIButton, 运行后发现虽然在界面上可以看到这个buton,但是点击这个按钮的时候按钮却没响应,纠结了很久也没发现是什么问题,代码如下: UIView *view = [UIView alloc] init]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(20, 20, 50, 30); [b

swift学习笔记之--类的计算属性

1,Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值,代码如下 class Calcuator{ var a:Int = 1; var b:Int = 1; var sum:Int{ get{ return a + b } set(val){ b = val - a } } } let cal = Calcuator(); print(cal.sum) //2 cal.sum = 5 print(cal.b) //4 2,对于set有简写方法,简写时,新赋的值默认