首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏浮躁的喧嚣

    iOS中的NSNumber与NSValue

    numberWithFloat:10.1]; NSNumber *num3 = [NSNumber numberWithBool:YES]; NSNumber *num4 = @10; NSValue (可以包装结构体) + (NSValue *)valueWithCGPoint:(CGPoint)point; + (NSValue *)valueWithCGVector:(CGVector)vector ; + (NSValue *)valueWithCGSize:(CGSize)size; + (NSValue *)valueWithCGRect:(CGRect)rect; CGPoint point = CGPointMake(10,20); NSValue *value = [NSValue valueWithCGPoint:point]; NSLog(@"%@",value)

    23110编辑于 2023-11-22
  • 来自专栏MapleYe

    【iOS】仿抖音,小红书视频引导动画

    animation.duration = duration; NSMutableArray *values = [NSMutableArray array];[values addObject:[NSValue (1, 1, 1.0)]]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 0.5, 1.0)]]; [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(2, 2, 1.0)]]; (1, 1, 1.0)]]; [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.7, 0.7 , 1.0)]]; [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];

    2.2K20发布于 2020-03-30
  • 来自专栏程序员充电站(itcharge)

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

    NSValue 我们有时候需要将结构体存储在集合中,但不能直接坐到。 Foundation提供了NSValue类将结构体转换为对象,并把它存储在集合中。 将结构体包装成NSValue对象 + (NSValue *)valueWithPoint:(NSPoint)point; + (NSValue *)valueWithSize:(NSSize)size; + (NSValue *)valueWithRect:(NSRect)rect; 示例 CGPoint point = NSMakePoint(10, 20); NSValue *value = [ point = NSMakePoint(10, 20); NSValue *value = [NSValue valueWithPoint:point]; CGPoint getPoint = [value *value = [NSValue valueWithBytes:&p objCType:@encode(Person)]; // 2.从NSValue中取出自定义的结构体变量 Person res

    86440发布于 2018-05-31
  • 来自专栏mukekeheart的iOS之旅

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

    Objective-C提供了不少类可以帮助我们,比较常见的是NSNumber,NSValue和NSData。 NSValue主要就是将这些原生的数据封装成对象,方便我们进行存储访问。 :(void *)value; //此外还提供了对基本的尺寸范围相关的封装和解封 + (NSValue *)valueWithPoint:(NSPoint)point; + (NSValue *)valueWithSize :(NSSize)size; + (NSValue *)valueWithRect:(NSRect)rect; + (NSValue *)valueWithEdgeInsets:(NSEdgeInsets 进行保存 NSValue *value = [NSValue valueWithPoint:point]; NSDictionary *dic = @{@"point" : value}; //从字典中获取 (pp)); 使用NSValue对自定义结构体进行封装和解封的示例代码如下。

    1.4K30发布于 2020-09-07
  • 来自专栏一“技”之长

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

    //获取信息中的键盘尺寸和位置信息         let value:NSValue = info[UIKeyboardFrameBeginUserInfoKey] as!  NSValue         //获取键盘动画的时间信息         let value2:NSValue = info[UIKeyboardAnimationDurationUserInfoKey NSValue         let keyboardSize = value.CGRectValue()         let height = keyboardSize.height          let value2:NSValue = info[UIKeyboardAnimationDurationUserInfoKey] as!  NSValue         var time:NSTimeInterval=0         value2.getValue(&time)         textViewBottom.constant

    2K20发布于 2018-08-15
  • 来自专栏向治洪

    ios动画

    valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-75)]; anima.toValue = [NSValue valueWithCGPoint:CGPointMake *value1 = [NSValue valueWithCGPoint:CGPointMake(50, 50)]; NSValue *value2 = [NSValue valueWithCGPoint :CGPointMake(kWindowWidth - 50, 50)]; NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(kWindowWidth - 50, kWindowHeight-50)]; NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(50, kWindowHeight -50)]; NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(50, 50)]; animation.values =

    1.1K50发布于 2018-01-26
  • 来自专栏進无尽的文章

    动画| 类似Windows的气泡屏保效果

    把这些视图保存在Aarray中 3、并随机给小球创建一个方向(一个很小的 CGPointMake量值),并用Barray保存这些方向addObject:[NSValue valueWithCGPoint ARC4RAND_MAX * 2.0f - 1.0f; NSLog(@"%f %f",randomX,randomY); [ballDirectionArray addObject:[NSValue for (int j = 0; j < ballArray.count; j++) { UIButton *btn = ballArray[j]; NSValue *val = CGPoint p = [val CGPointValue]; p.x = vx; [ballDirectionArray setObject:[NSValue 利用NSValue也可以封装很多CG变量,并保存到数组中。 ?

    2.5K20发布于 2018-09-12
  • 来自专栏進无尽的文章

    浅汇-iOS 动画

    *value0 = [NSValue valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-50)]; NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2-50)]; NSValue *value2 = [NSValue valueWithCGPoint :CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2+50)]; NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake (SCREEN_WIDTH*2/3, SCREEN_HEIGHT/2+50)]; NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH *2/3, SCREEN_HEIGHT/2-50)]; NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH, SCREEN_HEIGHT

    1.3K30发布于 2018-09-12
  • 来自专栏APP自动化测试

    再谈CAAnimation动画

    animation.keyTimes = @[@0, @0.25, @0.5]; animation.values = @[[NSValue valueWithCGPoint:CGPointMake(0, 0)], [NSValue valueWithCGPoint :CGPointMake(200, 200)], [NSValue valueWithCGPoint:CGPointMake 饰设置每一段动画的速度, 不设置的话默认为匀速, 这个地方注意有几段动画就要设置段数+1个速度, 第一个一般是0, 如果有少写 后面的漏掉的部分动画就不会执行 values, 就是设置动画线路 内容是NSValue :CGPointMake(200, 200)], [NSValue valueWithCGPoint:CGPointMake

    1.2K30发布于 2019-10-15
  • 来自专栏iOS进阶开发

    iOS开发UI篇--iOS动画(Core Animation)总结

    *value0 = [NSValue valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-50)]; NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2-50)]; NSValue *value2 = [NSValue valueWithCGPoint :CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2+50)]; NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake (SCREEN_WIDTH*2/3, SCREEN_HEIGHT/2+50)]; NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake( SCREEN_WIDTH*2/3, SCREEN_HEIGHT/2-50)]; NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH

    2.1K00发布于 2018-12-13
  • 来自专栏sktj

    IOS CAKeyFrameAnimation 实现动态位移

    let point3 = CGPoint(x:60, y:300) 14 let point4 = CGPoint(x:280, y:300) 15 16 animation.values = [NSValue (cgPoint:point1), NSValue(cgPoint:point2), 17 NSValue(cgPoint:point3), NSValue(cgPoint:point4)] 18

    1.5K20发布于 2019-07-08
  • 来自专栏酷酷的哀殿

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

    enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { mutableDic[[NSValue ]] = @(idx); }]; return [mutableDic copy]; } // 将字典转为数组 + (NSArray*)dic2Arr:(NSDictionary<NSValue { [mutableArr addObject:[NSNull null]]; } [dic enumerateKeysAndObjectsUsingBlock:^(NSValue 转为字典 (没有冲突的情况下,只需要 hash 一次)"); NSDictionary *dic = [self arr2Dic:arr]; if ([dic objectForKey:[NSValue _Nullable)(targetObj)]]) { NSLog(@"key 存在"); } NSLog(@"测试是否可以还原数组"); NSArray<NSValue

    2.4K20发布于 2021-04-26
  • 来自专栏Alice

    basicAnimation移动图形

    目的:采用CABasicAnimation  点击屏幕上的点来是实现图像的位置移动  并且位置能够不反弹     难点:1 通过动画的KeyPath找到layer的属性             2 通过NSValue 将点包装成对象 (下一点toValue的位置  对真正视图的改变)                 包装的时候是【NSValue valueWithPoint】               取值的时候是 keyPath basic.duration = 3.0f; basic.keyPath = @"position"; //将下一点进行封装后 赋值给basic的下一点 NSValue *mytoValue = [NSValue valueWithCGPoint:location]; basic.toValue = mytoValue; //设置能够呆在最后的位置不动 forKey:@"basic"]; }  代理动画的方法: -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { NSValue

    80190发布于 2018-02-01
  • 来自专栏iOS122-移动混合开发研究院

    【YFMemoryLeakDetector】人人都能理解的 iOS 内存泄露检测工具类

    而要想得到存地址,不存对象的效果,就要祭出整个工具库的灵魂函数: NSValue * key = [NSValue valueWithPointer: (__bridge const void * _Nullable )(info.instance)]; 将对象转换为 NSValue,直接以 NSValue 为键,来标记对象。 另外,还有一点必须提一下, NSValue 是可以在反向转换为 oc 对象的,这有利于你在拿到工具库提供的泄露信息后,进一步定位和分析问题: UIViewController * vc = (UIViewController :@selector(viewDidLoad) withOptions:AspectPositionAfter usingBlock:^(id<AspectInfo> info) { NSValue * key = [NSValue valueWithPointer: (__bridge const void * _Nullable)(info.instance)];

    1.7K60发布于 2018-01-02
  • 来自专栏APP自动化测试

    iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果

    position"; 13 basicAnimation.duration = 4.0f; 14 basicAnimation.fromValue = [NSValue valueWithCGPoint:showView.center]; 15 basicAnimation.toValue = [NSValue valueWithCGPoint 14 keyFrameAnimation.duration = 4.0f; 15 16 keyFrameAnimation.values = @[[NSValue valueWithCGPoint:showView.center], 17 [NSValue valueWithCGPoint:CGPointMake [NSValue valueWithCGPoint:CGPointMake(200, 200)]]; 20 21 //设置动画结束位置 22 showView.center =

    1.4K10发布于 2019-10-15
  • 来自专栏向治洪

    iOS动画总结

    valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-75)]; anima.toValue = [NSValue valueWithCGPoint:CGPointMake *value1 = [NSValue valueWithCGPoint:CGPointMake(50, 50)]; NSValue *value2 = [NSValue valueWithCGPoint :CGPointMake(kWindowWidth - 50, 50)]; NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(kWindowWidth - 50, kWindowHeight-50)]; NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(50, kWindowHeight -50)]; NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(50, 50)]; animation.values =

    1.3K80发布于 2018-02-06
  • 来自专栏雨尘分享

    iOS 动画基础总结篇

    valueWithCGRect:CGRectMake(0, 0, 200, 200)]; position 位置(中心点的改变) [NSValue valueWithCGPoint:CGPointMake *pointV1 = [NSValue valueWithCGPoint:point1]; NSValue *pointV2 = [NSValue valueWithCGPoint:point2]; NSValue *pointV3 = [NSValue valueWithCGPoint:point3]; NSValue *pointV4 = [NSValue valueWithCGPoint:point4 valueWithCGPoint:rectLayer.frame.origin], [NSValue valueWithCGPoint:CGPointMake valueWithCGPoint:CGPointMake(15, rectLayer.frame.origin.y + 100)], [NSValue

    1.4K50发布于 2018-06-07
  • 来自专栏滕先生的博客

    CAAnimation 核心动画概念一、 CAAnimation二、 CAPropertyAnimation三、CABasicAnimation(基本动画)CAPropertyAnimation的子类

    保存这些数值,实现多个点间的动画效果,CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation 属性: values:NSArray对象,里面的元素称为”关键帧”(NSValue 类型),动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧( NSValue) 例子: //设置动画属性 NSValue *p1 = [NSValue valueWithCGPoint :CGPointMake(50, 150)]; NSValue *p2 = [NSValue valueWithCGPoint:CGPointMake(250, 150)]; NSValue *p3 = [NSValue valueWithCGPoint:CGPointMake(50, 550)]; NSValue *p4 = [NSValue valueWithCGPoint:CGPointMake

    2.3K90发布于 2018-05-18
  • 来自专栏月亮与二进制

    《Motion Design for iOS》(四十二)

    POPSpringAnimation *scale = [self pop_animationForKey:@"scale"]; if (scale) { scale.toValue = [NSValue { scale = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scale.toValue = [NSValue POPSpringAnimation *scale = [self pop_animationForKey:@"scale"]; if (scale) { scale.toValue = [NSValue { scale = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scale.toValue = [NSValue self pop_animationForKey:@"rotate"]; if (scale) { // 拉伸回1.0的完整尺寸 scale.toValue = [NSValue

    59610发布于 2021-11-23
  • 来自专栏月亮与二进制

    《Motion Design for iOS》(四十)

    POPSpringAnimation *scale = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scale.toValue = [NSValue POPSpringAnimation *scale = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY]; scale.toValue = [NSValue 我们设置了 toValue为 [NSValue valueWithCGPoint:CGPointMake(2, 2)] ,看起来可能会有点奇怪。 为什么我们要将{2,2}这个点(我们的X和Y拉伸值)放到一个NSValue对象中去?好吧,这就是Pop工作的方式,它期待传到toValue参数中的是一个准确类型的值。 它总是期待一个对象,在这个例子中,它想要一个CGPoint转化成的NSValue对象。不幸的是Pop的这个部分在文档中有点难懂,但随着开发者的贡献它也在变得更好。

    62020发布于 2021-11-23
领券