标签:
给category添加基本数据类型属性
说明
通常,我们添加属性都是通过对象扩展来实现的,其实,我们也可以用runtime来添加基本数据类型的属性
源码
// // UIView+AnimationProperty.h // RuntimeCategory // // Created by YouXianMing on 15/7/8. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h> @interface UIView (AnimationProperty) @property (nonatomic) CGFloat scale; @end
// // UIView+AnimationProperty.m // RuntimeCategory // // Created by YouXianMing on 15/7/8. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "UIView+AnimationProperty.h" #import <objc/runtime.h> @implementation UIView (AnimationProperty) NSString * const _recognizerScale = @"_recognizerScale"; - (void)setScale:(CGFloat)scale { objc_setAssociatedObject(self, (__bridge const void *)(_recognizerScale), @(scale), OBJC_ASSOCIATION_RETAIN_NONATOMIC); self.transform = CGAffineTransformMakeScale(scale, scale); } - (CGFloat)scale { NSNumber *scaleValue = objc_getAssociatedObject(self, (__bridge const void *)(_recognizerScale)); return scaleValue.floatValue; } @end
// // ViewController.m // RuntimeCategory // // Created by YouXianMing on 15/7/8. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "ViewController.h" #import "UIView+AnimationProperty.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; redView.backgroundColor = [UIColor redColor]; [self.view addSubview:redView]; UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; greenView.backgroundColor = [UIColor greenColor]; greenView.scale = 0.5f; [self.view addSubview:greenView]; } @end
分析
标签:
原文地址:http://www.cnblogs.com/YouXianMing/p/4628840.html