NSValue简介
NSValue是结构体的对象类型,它为我们封装了一系列的很好的方法
可以方便的把结构体转为对象类型
1.把普通的结构体转化为NSValue类型
+ (NSValue *)valueWithPoint:(NSPoint)point; + (NSValue *)valueWithSize:(NSSize)size; + (NSValue *)valueWithRect:(NSRect)rect; + (NSValue *)valueWithEdgeInsets:(NSEdgeInsets)insets
对于我们常见的结构体类型,我们可以使用上面的方法来转化为一个对象
常见的结构体内部定义如下:
(1)CGRect
CGRect定义
/* Rectangles. */ struct CGRect { CGPoint origin; CGSize size; }; typedef struct CGRect CGRect;
CGRect是一个矩形结构体,里面包含了 一个左上角点,orgin也就是 x,y坐标
还包含了一个Size是矩形的宽和高
(2)CGPoint
CGPoint定义
/* Points. */ struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint;
CGPoint是一个包含x,y的结构体
CGFloat 是double类型的别名
(3)CGSize
CGSize定义
/* Sizes. */ struct CGSize { CGFloat width; CGFloat height; }; typedef struct CGSize CGSize;
CGSize是一个 包含宽和高的结构体
使用示例:
CGRect转换为NSValue
CGRect rect = CGRectMake(100, 100, 100, 100); NSValue *rect1 = [NSValue valueWithRect:rect];
CGPoint转换NSValue
CGPoint po = CGPointMake(100, 100); NSValue *po1 = [NSValue valueWithPoint:po];
CGSize转换为NSValue
CGSize size = CGSizeMake(100, 100); NSValue *size1 = [NSValue valueWithSize:size];
2.把NSValue转换为对应的结构体
可以使用NSValue对象的属性来获取其 结构体的值
@property (readonly) NSPoint pointValue; @property (readonly) NSSize sizeValue; @property (readonly) NSRect rectValue; @property (readonly) NSEdgeInsets edgeInsetsValue
示例:
获取CGRect值
CGRect rec = [rect1 rectValue];
获取CGPoint值
CGPoint po2 = [po1 pointValue];
获取CGSize值
CGSize size2 = [size1 sizeValue];
3.CGRect,CGSize结构体与NSString字符串互相转换
把 结构体 和 NSString相互转换,请参见:
http://blog.csdn.net/yangbingbinga/article/details/43105597
时间: 2024-11-29 12:06:05