• 让结构体类型frame的某个属性可以直接修改


    本篇是是本人在博客园写的第一篇博客,前几天因为种种原因最终决定离开混了几年的csdn。希望在博客园有个新的开始 

    Foundation框架里面的frame是大家最熟悉不过的一个属性了,但是修改起来比较麻烦,他是CGRect类型的CGRect是结构体 结构体类型里面的某个属性如果想要修改是不允许单个修改的,必须像下面这样先取出,改一下再重新赋值回去,也就是大家常说的三部曲

     

    如果结构体类型的东西也可以直接修改 那会有多爽?就像下面这样。

    其实只要自己给UIView写个分类就好了 用这个分类来替代frame。

    大概思想就是给用分类给UIView多增加几个属性x,y,height,width。这几个属性都分别实现get方法和set方法。这样以后frame就可以离开他了

    分类UIView+Frame 声明

     1 //
     2 //  UIView+Frame.h
     3 //  SXDownLoader
     4 //
     5 //  Created by 董尚先 on 15/1/2.
     6 //  Copyright (c) 2015年 shangxianDante. All rights reserved.
     7 //
     8 
     9 #import <UIKit/UIKit.h>
    10 
    11 @interface UIView (Frame)
    12 
    13 // 自己模仿frame写出他的四个属性
    14 @property (nonatomic, assign) CGFloat  x;
    15 @property (nonatomic, assign) CGFloat  y;
    16 @property (nonatomic, assign) CGFloat  width;
    17 @property (nonatomic, assign) CGFloat  height;
    18 
    19 
    20 @end

    分类UIView+Frame 实现

    #import "UIView+Frame.h"
    
    @implementation UIView (Frame)
    
    - (void)setX:(CGFloat)x
    {
        CGRect frame = self.frame;
        frame.origin.x = x;
        self.frame = frame;
    }
    
    - (CGFloat)x
    {
        return self.frame.origin.x;
    }
    
    - (void)setY:(CGFloat)y
    {
        CGRect frame = self.frame;
        frame.origin.y = y;
        self.frame = frame;
    }
    
    - (CGFloat)y
    {
        return self.frame.origin.y;
    }
    
    - (void)setWidth:(CGFloat)width
    {
        CGRect frame = self.frame;
        frame.size.width = width;
        self.frame = frame;
    }
    
    - (CGFloat)width
    {
        return self.frame.size.width;
    }
    
    - (void)setHeight:(CGFloat)height
    {
        CGRect frame = self.frame;
        frame.size.height = height;
        self.frame = frame;
    }
    
    - (CGFloat)height
    {
        return self.frame.size.height;
    }
    
    @end

    之后在需要的地方Import一下

    就可以把那些UI控件什么的frame轻松的单个修改了

  • 相关阅读:
    Influxdb修改数据保留策略
    PPT插件(islide)
    有关 MyEclipse->export runnable jar file选项 launch configuration里面没有可以选择的东西的解决方法
    使用SoapUI发送Post请求
    JSONObject 转换 JSON复杂对象
    SQL按照指定顺序对字段进行排序
    全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)
    如何去maven仓库下载jar包
    maven学习(下)利用Profile构建不同环境的部署包
    maven学习(中)- 私服nexus搭建
  • 原文地址:https://www.cnblogs.com/dsxniubility/p/4264677.html
Copyright © 2020-2023  润新知