首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将CGRect转换为Array中的NSValue,反之亦然

在 CGRect 和 NSValue 之间进行转换,需要使用一些库和工具。以下是一种转换方法:

  1. 安装 FastCGRectToNSValueNSValueToFastCGRect 这两个类。使用 CocoaPods 或 Carthage 安装:
代码语言:ruby
复制
pod 'FastCGRectToNSValue'
pod 'NSValueToFastCGRect'
  1. 将 CGRect 转换为 NSValue:
代码语言:swift
复制
import UIKit

let rect = CGRect(x: 10, y: 10, width: 30, height: 30)
let nsValue = FastCGRectToNSValue(rect)
  1. 将 NSValue 转换为 CGRect:
代码语言:swift
复制
import UIKit

let nsValue = NSValue(cgRect: CGRect(x: 10, y: 10, width: 30, height: 30))
let rectValue = NSValueToFastCGRect(nsValue)

FastCGRectToNSValueNSValueToFastCGRect 这两个类实现了 CGRect 和 NSValue 之间的转换。

此外,您也可以使用 Objective-C 版本的代码:

  1. 将 CGRect 转换为 NSValue:
代码语言:objc
复制
CGRect rect = CGRectMake(10, 10, 30, 30);
NSValue *nsValue = [NSValue valueWithCGRect:rect];
  1. 将 NSValue 转换为 CGRect:
代码语言:objc
复制
NSValue *nsValue = [NSValue valueWithCGRect:CGRectMake(10, 10, 30, 30)];
CGRect rectValue = [nsValue CGRectValue];

这些代码示例将帮助您实现 CGRect 和 NSValue 之间的转换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OC知识--Foundation框架详尽总结之『数字、结构体、日期、文件类』

NSNumber介绍 NSArray\NSDictionary只能存放OC对象,不能存放int\float\double等基本数据类 如果需要使用基本数据值作为对象使用,比如说放进数组或字典,需要先将基本数据类型包装成...OC对象,可使用NSNumber类 NSNumber可以根据基本数据类型创建对象,这样就可以间接基本数据类型存进NSArray\NSDictionary 2....NSRect和CGRect CGRect和NSRect是同义 CGRect代表是二维平面某个物体位置和尺寸 CGRect有2个成员 CGPoint origin:表示该矩形原点 CGSize...NSValue 我们有时候需要将结构体存储在集合,但不能直接坐到。 Foundation提供了NSValue结构体转换为对象,并把它存储在集合。...:(const char *)type; 从NSValue取出所包装任意数据 - (void)getValue:(void *)value; 示例 // 1.利用NSValue包装自定义结构体 typedef

58840

OC基础--数据类型与表达式

NSValue主要就是这些原生数据封装成对象,方便我们进行存储访问。...NSValue主要用来封装自定义数据结构,可以是系统框架提供CGRect/CGPoint/CGSize等数据结构,也可以是自己定义struct。..."point" : value}; //从字典获取NSValue,并从该对象获取对应NSPoint值 NSValue *vv = dic[@"point"]; NSPoint pp = [vv pointValue...,一些图片、文件、字符串等数据转化为字节流数据,方便数据封装和流动,比较常见是NSString/NSImage以及文件数据封装与传递。...在应用,最常用于访问存储在文件或者网络资源数据。一般解封方法在图片UIImage、字符串NSString中有对应从NSData数据创建。

98830
  • 再谈CAAnimation动画

    动画添加到viewlayer层 [actView.layer addAnimation:basicAnimation forKey:@"first"]; ?.... */ @property CGRect bounds; 只要有标注Animatable属性都可以做动画, 我们罗列下做个记录方便以后查看 @property CGRect bounds; @property...动画添加到viewlayer层 [actView.layer addAnimation:group forKey:@"first"]; ?...这里我们把上面创建一个动画修改圆角跟沿着正方形路线走动画加入到一个CAAnimationGroup 这里在要加入组动画最后不要设置延迟时间, 可能会出问题 老司机说animations数组所有...(比如弹簧效果)所要路径 Github地址: https://github.com/YouXianMing/EasingAnimation 具体有哪些动画效果可看库缓动函数查询表, 简单举个小球落地效果

    95130

    设计iOS随系统键盘弹收和内容文字长度自适应高度文本框

    设计iOS随系统键盘弹收和内容文字长度自适应高度文本框     文本输入框是多数与社交相关app不可或缺一个控件,这些文本输入框应该具备如下功能: 1.在键盘为弹起时,输入框悬浮在界面底部...需要属性与约束对象关联到文件: //整体文本控件高度     @IBOutlet weak var textViewHeight: NSLayoutConstraint!     ...//获取信息键盘尺寸和位置信息         let value:NSValue = info[UIKeyboardFrameBeginUserInfoKey] as! ... 为CGRect类型NSValue值 @available(iOS 3.2, *) public let UIKeyboardFrameEndUserInfoKey: String // 键盘末位位置尺寸... 为CGRect类型NSValue值 @available(iOS 3.0, *) public let UIKeyboardAnimationDurationUserInfoKey: String

    1.4K20

    iOS - 关于 KVC 一些总结

    @avg 读取集合每个元素右键路径指定属性,将其转换为double类型 (nil用 0 替代),并计算这些值算术平均值。然后结果以NSNumber实例返回。...@sum 读取集合每个元素右键路径指定属性,将其转换为double类型 (nil用 0 替代),并计算这些值总和。然后结果以NSNumber实例返回。...@distinctUnionOfObjects 读取集合每个元素右键路径指定属性,放在一个NSArray实例数组进行去重后返回。 // 获取集合所有不同 payee 对象。...@distinctUnionOfArrays 读取集合每个集合每个元素右键路径指定属性,放在一个NSArray实例数组进行去重后返回。...如果取到值不是一个NSNumber支持数据类型,则转换为NSValue对象, 然后返回。

    1.9K10

    Core Animation总结

    下图描述了CoreAnimation与UIKit框架关系 [1240] Core Animation开发动画本质就是CALayer内容转化为位图从而供硬件操作,所以想熟练掌握动画操作必须了解CALayer...根据属性类型,您可能需要用NSValue对象NSNumber包装这个数组值。对于一些核心图形数据类型,您可能还需要将它们转换为id,然后再将它们添加到数组。...有两种不同方式可以通知动画状态: 使用setCompletionBlock:方法完成块添加到当前事务。当事务所有动画完成后,事务执行完成块。...我们可以使用这些方法固定时间值转换为Layer本地时间或时间值从一个Layer转换为另一个Layer。这些方法可能影响图层本地时间媒体计时属性,并返回可与其他图层一起使用值。...CACurrentMediaTime函数返回计算机的当前时钟时间,该方法本机时间并转换为图层本地时间。

    1.3K10

    java jsonobjectList_java – JSONObject转换为List或JSONArray简单代码?「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 我已经通过各种线程阅读并发现了类似的问题,但在找到解决我特定问题方法方面却相当不成功....[{“locationId”:2,”quantity”:1,”productId”:1008}]}orr’s type = class org.json.simple.JSONObject 我正在尝试这些数据放入数组.../列表/任何可以使用密钥地方,470,471来检索数据....orderOneKey = (JSONObject)orderOne.get(0); System.out.println(orderOneKey.get(“productId”)); 这就是我所追求,...编辑: 显然我无法回答8个小时问题: 感谢朋友帮助和一些摆弄,我发现了一个解决方案,我确信它不是最有说服力,但它正是我所追求: for(Object key: orr.keySet()) { JSONArray

    8.9K20

    iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)

    UIView动画 设置UIView形变动画有两种常见用到属性,.frame,.transform,所以有的人也可以分别称之为: ① frame动画 ② transform动画 这两种动画只需要在动画语法适当位置...CAAffineTransformbool CATransform3DIsAffine (CATransform3D t); //CATransform3D转换为CGAffineTransform...CGAffineTransformConcat数学本质是括号内代表若干变换系数矩阵进行相乘。...如果在程序改变了某个控件transform,那么请不要使用这个控件frame计算 子控件 布局,应该使用bounds+center代替。 3....组动画 6.1 组动画 上面单一动画情况在实际开发实际比较少,更多时候是组合这些动画:创建不同类型动画对象,设置好它们参数,然后把这些动画对象存进数组,传进组动画对象animations属性中去

    3.3K21

    CoreText实现图文混排之文字环绕及点击算法

    self.bounds.size.height); CGContextScaleCTM(context, 1.0, -1.0); arrText = [NSMutableArray array...跟你们讲讲一切实现思路。 ---- 图片环绕实现方式 由于我只是给个demo,所以一切代码均从简写。实际过程,代码应进行封装分块。 我们视线集中到drawRect方法吧。...之前文章老司机讲过,我们在drawRect绘制文本时候主要是根据Path去绘制。...老司机查阅了很多资料,有的资料说这个方法在当有段前缩进或者首行缩进时候,并不准确,不会跟着缩进而进行偏移。然而老司机在段前缩进设为0仍然有这个问题。...因为执行效率上一个屏幕内能展示文字所包含CTRun数量在遍历过程并不会造成过多性能浪费,所以老司机当时也没有在意。

    1.3K20

    判断 NSArray 数组是否包含指定元素时间复杂度从 O(n) 降为 O(1)

    php 数组 首先,我们先对 php 数组进行一些了解 在 php ,数组提供了一种特殊用法:关联键数组。...关联键数组 非常类似于其它语言 map 或者 字典 // 普通数组 $cars = array("Volvo", "BMW", "Toyota"); var_dump($cars); // 关联键数组...image 通过类似的思想,我们同样可以 普通 NSArray 转换为 NSDictionary 普通 NSArray 转换为 NSDictionary 下面,我们按照以下规则设计两个转换方法...: 字典 键 是数组存储 元素 该设计方式可以保证后续通过 objectForKey: 判断是否存在指定 元素 字典 值 是 数组 索引值 该规则保证字典可以恢复为数组 // 数组转为字典...containsObject: 和字典 objectForKey: 进行性能测试: + (void)load { NSMutableArray *arr = [NSMutableArray array

    1.8K20

    GolangInt32换为int16丢失精度具体过程

    大家好,又见面了,我是你们朋友全栈君 Int32换为int16会丢失精度,这是总所周知,但是具体如何丢失精度,请看下面的代码: var tmp1 int32 = 123424021 var tmp2...: 2.原理分析 首先,我们分别把123424021和123456789换为二进制形式: 123424021二进制形式111010110110100110100010101 123456789二进制形式...当从int32换为int16时,Golang会截取后面的16位数字,两个数字截取情况如下: 123424021截取0100110100010101 123456789截取1100110100010101...但是在无符号二进制数,我们可以把1100110100010101看作一个正数来处理,此时1100110100010101换为十进制就是52501。...3.二进制正负数转换运算 二进制负数采用补码方式来实现,运算规则是正数取反后再加1,例子: 假如我们要表示-100,首先,100二进制形式是01100100,我们对其近期取反操作10011011‬

    2.3K50

    老司机出品———疯狂造轮子之滑动验证码

    笑不出来 然而最近一直也没时间搞什么飞机,也没有什么能拿出来跟大家分享,就把最近开发过程一些小东西贴出来给大家看吧。...之所以写这个控件,是因为需求用到了,然而当前有没有相应类库能让我拿来直接用。 所有效果是仿照日常网页效果去做,所以我们还是应该首先分析一下我们需要什么。...UIImage *)dw_ImageWithUrl:(NSURL *)url; ///转换图片为Base64字符串 -(NSString *)dw_ImageToBase64String; ///Base64换为图片...return CGPointMake(fixValueWithLimit(x, validSize.width), fixValueWithLimit(y, validSize.height)); } ///验证位置转换为...这里呢,老司机更加推荐使用Layer去处理图层,因为本身DrawRect方法代码是使用CPU进行预算然后bitmap提交给GPU,他处理绘制速度远不如CALayer直接使用GPU来快。

    93341
    领券