关于自定义结构体

2019-09-29  本文已影响0人  HCL黄

1、为什么我要自定义结构体

2、先来看看系统CGSize结构体

struct CGSize {
    CGFloat width;
    CGFloat height;
};
typedef struct CG_BOXABLE CGSize CGSize;
struct 结构体名{
        类型名 成员名1;
        类型名 成员名2;
        ... ...
        类型名 成员名n;
};
typedef struct CG_BOXABLE 给此结构体定义了一个别名

3、接下来我们来看看CGSizeMake

/* Make a size from `(width, height)'. */

CG_INLINE CGSize CGSizeMake(CGFloat width, CGFloat height);

4、自定义结构体

设置占位Label的位置结构体,跟系统的基本保持一致

struct
LAPlacehoderTLR {
    CGFloat top;
    CGFloat left;
    CGFloat right;
};
typedef struct CG_BOXABLE LAPlacehoderTLR LAPlacehoderTLR;
CG_INLINE LAPlacehoderTLR
LAPlacehoderTLRMake(CGFloat top, CGFloat left, CGFloat right)
{
    LAPlacehoderTLR placehoderTLR;
    placehoderTLR.top = top;
    placehoderTLR.left = left;
    placehoderTLR.right = right;
    return placehoderTLR;
};

4、如何使用

定义属性

@property (nonatomic, assign) LAPlacehoderTLR tlr;

使用set方法就可以使用赋值了

- (void)setTlr:(LAPlacehoderTLR)tlr {
    _tlr = tlr;
    [self.placehoderLabel mas_updateConstraints:^(MASConstraintMaker *make) {
        make.top.mas_equalTo(tlr.top);
        make.left.mas_equalTo(tlr.left);
        make.right.mas_equalTo(tlr.right);
    }];
}

参考资料

1、https://www.jianshu.com/p/80150f88a61b
2、https://www.jianshu.com/p/d557b0831c6a

上一篇下一篇

猜你喜欢

热点阅读