a.移动相对于当前位置 + (SCNAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY z:(CGFloat)deltaZ duration:(NSTimeInterval)duration; + (SCNAction *)moveBy:(SCNVector3)delta duration:(NSTimeInterval)duration; b.移动到指定的位置
创建一个 Timer + scheduledTimerWithTimeInterval: invocation: repeats: + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; + scheduledTimerWithTimeInterval: target: selector: userInfo:
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
早在2017年年初,我就用七八篇文章的篇幅系统介绍过Objective-C中的CoreAnimation框架。CoreAnimation是iOS中实现动画的框架,整个iOS中的动画(比如UIView中封装的动画、UIViewController切换时的转场动画、UITableViewCell移除增添时的动画等,都是对CoreAnimation的封装)都是通过CoreAnimation实现的。
//获取gif图片的总时长和循环次数 - (NSTimeInterval)durationForGifData:(NSData *)data{ //将GIF图片转换成对应的图片源 CGImageSourceRef gifSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); //获取其中图片源个数,即由多少帧图片组成 size_t frameCout = CGImageSourceGetCo
一款APP的成功与否,除了完善的功能外,用户体验也占有极大的比重,动画的合理运用,可以很好的增强用户体验。iOS开发中,常用的动画处理有UIView动画编程和核心动画编程,其中UIView动画使用简便,开发中应用十分广泛。这篇博客,主要讨论UIView的动画使用。
NSTimer在IOS开发中会经常用到,尤其是小型游戏,然而对于初学者时常会注意不到其中的内存释放问题,将其基本用法总结如下:
开篇 我们项目启动的时候要弹出一个广告窗口,很简单的一个功能,服务器的判断一下满足条件,即返回数据,客户端判断数据部位NULL,则弹出弹窗 但是老板说,这个要时间短弹出,每天的中午12点到下午2点不能弹出来 这这这,有点坑我们吧,每天存一个key,有点坑吧 仔细想想,没有必要啊,这就是考验我们对时间的操作,代码实现如下: 代码实现 #pragma mark -- 判断是否弹出广告 - (BOOL)isLoadAdvertIn { //当前时间戳 NSTimeInterval int
UIInterfaceOrientation方向枚举: UIInterfaceOrientationPortrait //home健在下 UIInterfaceOrientationPortraitUpsideDown //home健在上 UIInterfaceOrientationLandscapeLeft //home健在左 UIInterfaceOrientationLandscapeRight //home健在右 旋转屏幕时触发的函数: //旋转方向发生改变时 -(void)willAnim
创建当前时间 NSDate *date = [NSDate date]; 从现在开始的24小时 NSTimeInterval a_day = 24*60*60; NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:a_day]; 根据已有日期创建日期 NSTimeInterval a_day = 24*60*60; NSDate *date = [NSDate date]; NS
促销商品展示的 Cell 是重用的,开始的时候其他栏目是没有赋值的。导致是不能收到已经停止的消息的,自然也就没办法从列表里面进行移除
1 image和imageView的区别 image是图片(照片). imageView是放图片的控件(相框). 2 创建控件显示到view上的标准步骤 创建对象. 设置内容. 设置大小. addsubview 3 CGRectOffset函数的含义 待补充 4 小飞机-监听四个按钮的点击事件(代码) -(void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
需要注意的是CADisplayLink必须要添加到可以执行的RunLoop中才会执行, 当添加到某一个RunLoop后如果该RunLoop暂停或者该RunLoop的Model改变了, 计时器也会暂停
今天用到一个时间类,之前写过但是一时找不到了在此记录一下方便以后查看。 /** 两个时间相差多少天多少小时多少分多少秒 @param startTime 开始时间 @param endTime 结束时间 @return 相差时间 */ + (NSString *)dateTimeDifferenceWithStartTime:(NSString *)startTime endTime:(NSString *)endTime { NSDateFormatter *date = [
在前面几篇博客中,介绍了iOS开发中的网络编程相关内容并且介绍了常用了两个平行的网络框架NSURLSession和NSURLConnection。无论是NSURLSession类还是NSURLConnection类,其网络请求都是通过NSURLRequest类进行发起的,本篇博客将介绍NSURLRequest类的用法和其中请求属性的设置。
主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类 NSCalendar -- 日历类,它提供了大部分的日期计算接口,并且允许您在NSDate和NSDateComponents之间转换 NSDateFormatter -- 用来在日期和字符串之间转换 NSDate NSDate用来表示公历的GMT时间(格林威治时间)。 有下面几种初始化方法:
做音视频或图像处理方向的开发同学一般都或多或少接触过 libyuv[1] 这个开源库,我们在音视频开发中处理 YUV、RGB 等格式的数据转换、旋转、缩放时常常用到它。libyuv 基于 C 语言实现,可以在 Windows、Linux、Mac OS、Android、iOS 等多平台使用,并且做了指令集加速优化,有比较好的性能表现。
AVAudioPlayer是系统提供给我们的一个音频播放类,在AVFoundation框架下,通过它,我们可以实现一个功能强大的音乐播放器。首先,在项目中我们需要导入AVFoundation这个框架。
点击操作之后倒计时开始,然后App在后台运行,倒计时不停止继续执行。短信验证码 、时间倒计时等情况都适用这个需求。
一、基本操作方法 1. 当前时间创建NSDate NSDate *myDate = [NSDate date]; NSLog(@"myDate = %@",myDate); 2. 从现在开始的24小时 NSTimeInterval secondsPerDay = 24*60*60; NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; NSLog(@"myDate = %@",t
使用AFNetworking 2.0 请求数据时出现错误 Request failed: unacceptablecontent-type: text/html 解决方法
project正在使用长连接快来server沟通。因此,指定我们的协议前两个字节为数据长度来区分数据包
在使用 NSTimer,如果使用不得当特别会引起循环引用,造成内存泄露。所以怎么避免循环引用问题,下面我提出几种解决 NSTimer 的几种循环引用。
两年前针对这一点写过一篇文章Effective Objective-C 2.0——多用类型常量,少用#define预处理指令,本文是在这篇文章的基础上进行扩展的。
MPMoviePlayerController是iOS中进行视频播放开发的一个控制类,里面涵盖了视频播放中大部分的需求功能,在使用这个框架时,需要导入头文件<MediaPlayer/MediaPlayer.h>。
前两篇博客中,我们分别介绍了UIView动画的两种使用方式,分别为,带block的方式:http://my.oschina.net/u/2340880/blog/484457 ,传统的属性配置的方式:http://my.oschina.net/u/2340880/blog/484538。通过UIView动画的类方法,我们可以十分方便的使View某些属性改变的同时拥有动画效果。这篇博客主要讨论View切换的动画操作。
上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法。
通过加速度传感器,螺旋仪传感器和磁力传感,我们可以获取到手机在当前三维空间中的形态,加速度传感器也被称作重力感应。在一些赛车游戏中可以广泛得到应用。在iOS5之前,iPhone支持的传感器有限,关于加速度传感器的管理用UIAccelerometer这个类负责,iOS5之后,有关设备空间信息的管理交由了CoreMotion这个框架,CoreMotion将多种传感器统一进行管理计算。
在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免产生垃圾数据
公司有个邮件项目,其中Exchange日历需要大量的日期时间的计算。前两天客户反馈一个问题:循环日历修改单日后,生成的exception日期未生效,也就是说修改后的会议时间没有改动。正常来说这是个主流程功能,不太可能出现这样的问题,我们本地各种日志分析和造日历会议想要复现这个问题,徒劳无功。后来在查另一个完全不相干的问题时,查到了用户时区被改动导致日期错误问题,灵感乍现,连忙去试试之前用户反馈的日历周期在不同时区上的日历表现。果然,这次看到了不同。
searchTextField=[[UITextFieldalloc]initWithFrame:CGRectMake(30,0,searchView.frame.size.width-120,30)]; [searchTextFieldsetPlaceholder:MYLocalizedString(@"shangpinmingchengtiaoma",@"")]; searchTextField.font = SearchViewTextFont; [searchTextF
在使用ReactiveCocoa 过程中,Josh Abernathy和Justin Spahr-Summers 两位大神为了能让RAC的使用者更畅快的在沉浸在FRP的世界里,更好的进行并发编程,于是就对GCD进行了一次封装,并与RAC的各大组件进行了完美的整合。
编写代码经常需要定义常量,例如,写一个UI动画,需要定义一个动画播放时间,通常做法
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 被调用。这个方法是发生在翻转开始之前。一般用来禁用某些控件或者停止某些正在进行的活动,比如停止视频播放。 再来是
mgr实现ZFPlayerMediaPlayback协议,然后在初始化时,开启本地服务器
+(NSArray *)getTwoDataMin:(NSString *)stamp1 andWith:(NSString *)stamp2{
自欺欺人的使用 NSTimer 销毁 Demo地址 1.NSTimer是要加到runloop中才会起作用。 常见的创建timer方式 // 第一种方式 @property (nonatomic , strong) NSTimer *timer; // 默认加入当前runloop的NSDefaultRunLoopMode self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerA
GLkit是苹果对OpenGL/openGl ES的一次封装,目的是为了简化苹果开发者使用成本,它的出现加快了开发者的开发速度。类似在OPenGL中出现的固定着色器的概念。但是只要是固定的就会有限制,无法进行自定义编程(顶点着色器,片元着色器)
因此,我们不可避免的要用到一些方法来计算代码的执行效率。计算代码的执行效率可以使用的API有:
一、简介 简单来说,音频可以分为 2 种 1.音效 又称『短音频』,通常在程序中的播放时长为 1 ~ 2 s 在应用程序中起到点缀效果,提升整体用户体验 2.音乐 比如游戏中的『背景音乐』,一般播放时间较长 播放音频可以使用框架:AVFoundation.framework 二、音效的播放 //1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"aaa.wav" withExtension:nil]; //2.加载音效文件,得到
UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。UIView可以产生动画效果的变化包括:
在上篇文章中,详细分析了RACSignal是创建和订阅的详细过程。看到底层源码实现后,就能发现,ReactiveCocoa这个FRP的库,实现响应式(RP)是用Block闭包来实现的,而并不是用KVC / KVO实现的。
解决方法:1.通过修改timer默认mode, NSRunLoopCommonModes(滑动时主线程会从NSDefaultRunLoopMode切换为UITrackingRunLoopMode,导致timer停止运行)
在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define、const以及typedef。那么它们之间有什么区别呢?我们接下来一个一个具体了解下。
小编在这段儿时间测试过程中发现了好多内存问题,其中较大部分都是由于循环引用造成的内存泄漏,这里小编就借此类问题来给大家分享一下循环引用引发的原因及常见解决方案。
本文总结了iOS中最常见的视频播放方法,不同的方法都各具特点,我希望能够总结它们的不同,方便在开发中选择合适的技术方案。 Apple为我们提供了多种方法来实现视频播放,包括MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlayerViewController等。而值得注意的是,上述的MPMoviePlayerController与MPMoviePlayerViewController在iOS9.0之后被弃用。虽说如此,这还是将它
Simulator Screen Shot - iPhone 12 - 2021-04-25 at 14.20.23.png
我们知道,现在智能手机手机的功能已经越来越强大。小小的手机中集成了众多的传感器配件。通过这些传感器可以获取到手机甚至用户的状态信息。
领取专属 10元无门槛券
手把手带您无忧上云