您的位置:首页 > 产品设计 > UI/UE

NSValue包装对象指针,CGRect结构体等

2013-02-01 17:48 513 查看
@interface NSValue (NSValueUIGeometryExtensions)

+ (NSValue *)valueWithPointer:(const void *)pointer;//保存对象指针

+ (NSValue *)valueWithCGPoint:(CGPoint)point;//保存CGPoint结构体

+ (NSValue *)valueWithCGSize:(CGSize)size;//保存CGSize结构体

+ (NSValue *)valueWithCGRect:(CGRect)rect;//保存CGRect结构体

+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;

+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;

- (void *)pointerValue;

- (CGPoint)CGPointValue;

- (CGSize)CGSizeValue;

- (CGRect)CGRectValue;

- (CGAffineTransform)CGAffineTransformValue;

- (UIEdgeInsets)UIEdgeInsetsValue;

@end

//

// NSArrayAndSelectorViewController.m

// NSArrayAndSelector

//

// Created by Lixf on 09-10-15.

// Copyright Lixf 2009. All rights reserved.

//

#import "NSArrayAndSelectorViewController.h"

@implementation NSArrayAndSelectorViewController

@synthesize SelectorArray, RectArray, TransformArray;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad {

[super viewDidLoad];

//NSValue包装指针

NSValue* start = [NSValue valueWithPointer:@selector(start:)];

NSValue* help = [NSValue valueWithPointer:@selector(help:)];

//NSArray 添加NSValue包装后的指针

NSArray *Array = [[NSArray alloc] initWithObjects:start, help, nil];

self.SelectorArray = Array;

[Array release];

CGRect rect1 = {10, 10, 200, 200};

CGRect rect2 = {20, 20, 100, 100};

//NSValue包装CGRect结构

NSValue *aRect1 = [NSValue valueWithCGRect:rect1];

NSValue *aRect2 = [NSValue valueWithCGRect:rect2];

//NSArray 添加NSValue包装后的指针

NSArray *reArray = [[NSArray alloc] initWithObjects:aRect1, aRect2, nil];

self.RectArray = reArray;

[reArray release];

//CGAffineTransform

CGAffineTransform transform1 = CGAffineTransformMakeRotation(40);

CGAffineTransform transform2 = CGAffineTransformMakeRotation(-40);

NSValue *aTransform1 = [NSValue valueWithCGAffineTransform:transform1];

NSValue *aTransform2 = [NSValue valueWithCGAffineTransform:transform2];

NSArray *TransArray = [[NSArray alloc] initWithObjects:aTransform1, aTransform2, nil];

self.TransformArray = TransArray;

[TransArray release];

[testView setFrame:[[RectArray objectAtIndex:0] CGRectValue]];

[testView setTransform:[[TransformArray objectAtIndex:0] CGAffineTransformValue]];

[self performSelector:[[SelectorArray objectAtIndex:0] pointerValue] withObject:nil afterDelay:0.5];

}

-(void)start:(id)sender{

NSLog(@"start");

[testView setFrame:[[RectArray objectAtIndex:1] CGRectValue]];

[testView setTransform:[[TransformArray objectAtIndex:1] CGAffineTransformValue]];

[self performSelector:[[SelectorArray objectAtIndex:1] pointerValue] withObject:nil afterDelay:0.5];

}

-(void)help:(id)sender{

NSLog(@"help");

//[testView setFrame:[[RectArray objectAtIndex:0] CGRectValue]];

//[testView setTransform:[[TransformArray objectAtIndex:0] CGAffineTransformValue]];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐