zoukankan      html  css  js  c++  java
  • 给category添加基本数据类型属性

    给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

    分析

  • 相关阅读:
    浅谈算法和数据结构: 二 基本排序算法
    ExecuteScalar()方法的使用
    as和强制类型转换的区别
    duilib入门简明教程 -- 自绘标题栏(5)
    duilib入门简明教程 -- 响应按钮事件(4)
    duilib入门简明教程 -- 第一个程序 Hello World(3)
    duilib入门简明教程 -- VS环境配置(2)
    duilib入门简明教程 -- 前言(1)
    linux 查看 PHP 的默认版本。
    mui
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4628840.html
Copyright © 2011-2022 走看看