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

如何NSLog在调试(Debug)时候输出,发布(Release)时候不输出?

更新: 在调试时候可以把所在类名、方法名、行数等相关信息也打印出来,更方便调试,更新一下宏定义 问题: 之前一直觉得用在调试时候用NSLog无所谓,但是接口有很多坑时候就需要非常多打印,然后就越来越多无用信息打印出来...,严重影响了后面的调试,而且只是希望在调试时候打印,发布时候不需要打印,然后就记得好像可以用宏定义来解决。...:表示宏定义可变参数 // __VA_ARGS__:表示函数里面的可变参数 #ifdef DEBUG #define FuLog(...)...#endif ---- 使用: 在需要用NSLog()地方可以用FuLog()替换,这样的话在Debug模式就可以打印,在Release模式下就不会打印 如何测试成不成功呢?...点击项目名,然后选择Edit Scheme ? 切换模式调试,看看是否成功

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何动画更自然-运动曲线探究与应用

| 导语 本文将从为什么要探究更自然动画如何探究运动曲线方程、列举常用运动曲线、分别使用js和css实现曲线动画效果、可视化实现工具这几个方面进行介绍。...然而在制作动画时候,我们也许会常常纠结怎么设置timing-function。...现实生活中运动效果丰富多样,只靠css3提供几个基本动画函数是不足以模拟,例如弹簧动画效果等。要模拟这些真实效果,就要学会如何获得这些效果背后动画函数了。...但我们仍然可以通过以前学过物理学和数学知识来做一下研究。 下面有一个弹簧块,假设它质量为1,在它不动时候位置是x = 1,则拉伸时距离就是x-1了: ?...对设置面板做一下简单说明: 1.第一个0ms处表示开始节点时状态,第二个1000ms处表示1000ms处时间节点状态,可以点击它来修改时间。点击右上角加号可以添加新时间节点。

2.5K30

如何用纯css打造类materialUI按钮点击动画并封装成react组件

materialUI按钮点击动画,并封装到自己UI库中,笔者特地总结了一些思路,希望可以和广大前端工程师们一起探讨....本质上也是用了css3动画特性, 笔者查看源代码和通过点击发现materialUI会根据点击位置不同而作不同位置动画,这个有点意思.我们先不讲这么复杂例子,下面通过css3方案来实现一个类似的效果...原理 这个动效原理其实也很简单,就是利用css3transition过渡动画,配合::after伪对象就可以实现,点击时候由于元素会激活:active伪类, 然后我们基于这个伪类, 在::after...组件设计思路 仅仅用上述代码虽然可以实现一个按钮点击动画效果,但是并不通用, 也不符合作为一个经验丰富程序员风格,所以接下来我们要一步步把它封装成一个通用按钮组件,它无所不用....css module带来高灵活性, 使其属性和类名高度关联.

1.9K30

掌握Chrome开发工具:新一代前端开发技术

时候我觉得黑色主题眼睛更舒服,并且黑色主题显然看起来更酷一些 :) 选择模式 ? Chrome开发者工具提供了很多选择元素方法,其中最快捷方法就是使用选择模式。...通过点击样式窗口右上角:hover图标,你可以打开元素状态模拟工具。 该工具可以你模拟一个元素hover,active,focused和visited伪态,并且看到不同伪态相关样式与选择符。...点击“record”,之后开始使用你Web应用。当你使用结束后,Chrome将向你显示操作期间运行具体代码。 调试用户遇到问题 通常来说调试工具只有在你自己机器上才会生效。...但如果你有兴趣了解用户在使用过程中遇到bug和性能问题,不妨尝试一下LogRocket。 ? LogRocket 是一个前端日志记录工具,它可以你重放问题,就像它们发生在你自己浏览器中一样。...不是通过猜测错误发生原因,或要求用户提供截图或者错误日志,logrocket可以你通过重放快速了解到问题出在哪里。

1K20

一些你可能不知道奇葩调试技巧

我们可以在想要调试地方右键,选择 Add conditional breakpoint 然后在条件中输入断点生效条件,例如我们可以它在这个位置只打印日志不进行暂停: 还有一些你可能会使用到调试条件...但在你代码中某个地方,你调用了展示动画方法,但没有相应隐藏动画调用。...你要如何找到这个没有配对展示动画方法调用源头呢?...你可以在展示动画方法条件断点中使用 console.trace 来运行代码,找到对应展示动画方法最后一个栈追踪,点击调用源就可以跳转到对应代码位置: 甚至我们还可以利用条件断点来帮助我们对函数进行性能分析...这个技巧可以在你需要将一些数据信息复制到剪贴板,以便你在其他地方使用或者进行分析时候使用。

17310

掌握Chrome开发工具,做新一代前端开发

时候我觉得黑色主题眼睛更舒服,并且黑色主题显然看起来更酷一些 :) 选择模式 ? Chrome开发者工具提供了很多选择元素方法,其中最快捷方法就是使用选择模式。...通过点击样式窗口右上角:hover图标,你可以打开元素状态模拟工具。 该工具可以你模拟一个元素hover,active,focused和visited伪态,并且看到不同伪态相关样式与选择符。...点击“record”,之后开始使用你Web应用。当你使用结束后,Chrome将向你显示操作期间运行具体代码。 调试用户遇到问题 通常来说调试工具只有在你自己机器上才会生效。...但如果你有兴趣了解用户在使用过程中遇到bug和性能问题,不妨尝试一下LogRocket。 ? LogRocket 是一个前端日志记录工具,它可以你重放问题,就像它们发生在你自己浏览器中一样。...不是通过猜测错误发生原因,或要求用户提供截图或者错误日志,logrocket可以你通过重放快速了解到问题出在哪里。

1.3K50

《iOS Human Interface Guidelines》

当人们点击横幅时,广告执行一个事先确定动作,比如播放一个视频、显示交互内容、或者启动Safari来打开一个网页。这个动作可以覆盖你UI来显示内容,或者app切换到后台。...将横幅放置在靠近屏幕底部地方也可以增加不影响用户可能性。 当在用户体验中有穿插时候模态地展示全屏横幅。如果在你app流程中有自然中断和环境改变,模态展示风格是比较好。...和所有横幅一样,当用户点击全屏横幅时会启动一个iAd体验,但你app可以在合适情况下响应横幅区域上其他手势(比如拖拽或者滑动)。 确保使用合适动画来显示和隐藏非模态全屏横幅视图。...比如说,一个杂志阅读app可能会用显示其他内容页面的翻页动画来显示一个横幅。 确保所有横幅在你app中有意义时间和地方显示。人们倾向于在不觉得干扰了他们工作流时候进入一个iAd体验。...一般来说,在用户查看和与广告交互时,你app会持续运行和接收事件,所有可能有的事件会发生并且急需他们立即关注。然而很少有情况需要停止一个进行中广告。

1.2K40

iOS 开发从 UIView 动画说起

界面动画 在这段动画之中发生最为明显事情就是两个文本框位置变化,在动画开始之前,两个文本框位置应该是在屏幕左边,而下方按钮现在是隐藏状态(设置alpha) ?...可实现动画属性 ---- 现在你已经可以制作简单动画了,但要记住:不是所有修改属性操作放到animations代码块中都是变成动画实现 —— 不管你怎么修改一个视图tag,或者是delegate...比如我尝试着某个UICollectionView分类按钮从屏幕下方弹入视图时候;又或者我这个小球弹到右下角,以提示用户该如何操作: ?...,在小球被点击时候,还会产生一个弹到右下角动画,然后从左侧弹出列表。...这是非常重要,我们动画应该不仅仅只是为了界面更加优雅漂亮,还应该能用以减少用户学习使用app成本,这些都是动画追求。

1.7K70

《Motion Design for iOS》(三)

经过这次思考和所有这些app,我意识到有三个我要为一个iOS app(或者任何数字产品)想象、设计和构建一个动画关键原因: 过渡:在两个视觉状态之间突出一个平滑运动,用户适应新界面而不是被推进去。...乐趣:通过使用奇思妙想或意料之外动作一个平凡交互更加吸引人且有趣。 让我们看一些动画例子并仔细剖析它们存在原因以及它们使用这三类动画目的。...iOS 7日历app动画 苹果给iOS日历app为iOS 7彻底重新构想了一遍。查看一年和单个月份之间动画是一个很好过渡例子,在两个视觉状态直接引导用户。...iOS 7.1 通话界面和关机动画 从iOS 7.1开始通过界面动画变得彻底精致了,并且现在比以前有了更加一致设计。当接电话时,绿色接通按钮会旋转并过渡成红色,这样就可以变成挂断按钮。...一个相似的过渡也发生在你点击绿色拨通按钮发起一次通话时候

28120

游戏开发之UE4添加角色到场景中

GENERATED_UCLASS_BODY()会适当处理你类函数成为一个UE4类。现在你不需要彻彻底底地搞清楚它们工作原理,你只需要确保它们在正确位置出现。 二....三 在运行时改变载入资源  载入网格通常情况下,如果使用C++代码来指定要载入资源,这是一种硬编码坏习惯。在运行程序时候,如果资源发生了改变,则程序不会做出改变。...5) 在右侧细节面板中,在Mesh选项卡中,选择下拉按钮,然后点击视图选项,点击显示引擎内容,再选择TutorialTPP。 ? 6) 这时候碰撞体看起来是这样,模型和碰撞体是对不上: ?...四 添加动画动作 添加动画你可以看到人物模型是呈T型,3D建模/动画师通常都会人物默认状态下摆T型,因为此时这可以使得人物做出各种各样动作。...3) 点击工具栏保存。 现在角色还不能被控制,我们下一节继续讲如何编写C++代码来控制角色。

2.6K50

WPF 动画实战 点击时显示圆圈淡出效果

本文告诉大家一个有趣动画,在鼠标点击时候,在点击所在点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡效果。...就是点击时候,看命中到哪个元素,如果容器没有设置背景,那么这个容器就不能接收命中测试,也就是点击时候不会判断点击到这个容器 在后台代码添加鼠标点击代码 如何在 WPF 中显示一个圆圈?...也就是一个 Storyboard 里面包含多个不同动画,而每个动画都对特定某个对象某个属性更改,通过更改属性方式做到某个对象做动画 本文需要做动画包括圆圈变大,修改圆圈透明度 圆圈变大方法就是修改...通过相同方法设置高度,然后尝试开启动画 storyboard.Begin(); 此时点击 Canvas 容器时候,就可以看到在鼠标点击显示圆圈,然后圆圈不断变大 当然,还有下一步就是圆圈变淡...,但是还有一点细节是,刚才只是修改元素大小,但是元素左上角不变,也就是在做元素变大动画时候,其实可以看到不是通过圆心开始变大 一个优化方法是在元素做变大动画时候,同时修改元素左上角坐标

2.4K20

如何利用动画效果来提升用户体验

1483798894743563.gif 在页面完全加载完之前用屏幕框架递增方式完成 状态切换不能太生硬 动画效果可以过渡更加显著,所以当用户开始和结束,动画效果要能展示到底发生了什么。...好过渡设计会用户清楚明白自己注意力应该往什么地方放。 Adrian Zumbrunnen 举了一个关于当用户点击链接时候,滚动动画如何帮助用户保持所在环境好例子。...一个小小细节也能显示出接下来会发生什么,用户明白不同情况下标识含义之间不同。 ?...用户通过点击应用程序总是能知道发生了什么,这感觉很好。 ?...再好动画被过度使用后,也会用户感觉很厌烦。当我们设计一个动画时候,要问自己,“当这个动画第100次出现时候,用户会讨厌还是直接无视?”

1.1K40

iOS 9人机界面指南(一)下篇:UI设计基础 - 腾讯ISUX

适当动画可以: 传达状态和提供反馈 增强直接操纵感 将用户操作可视化 ? (译者注:以上为视频截图,完整视频请点击观看) 谨慎地增加动画,特别是在那些无法提供沉浸式体验应用中。...自定义动画之间也需要保持一致性,这样可以用户在使用应用以之前建立经验为基础。 一般来说,自定义动画要考虑动画现实性和可信性。...一个图形库视图应该支持用户点击一个新建文档占位图便完成新建文档操作,而不是用户通过访问别的地方来新建文档。...提示:你可以使用Quick Look Preview功能来用户预览你应用中文件,哪怕你应用不能打开这些文件。想要了解如何在你应用中提供这个功能,请参阅Quick Look....尤其是,如果你要用一段文字来描述如何改变这个设置,比如“设置>隐私>定位服务”,倒不如直接放置一个按钮,点击后即可到达设置中定位服务。

1.8K21

关于 RxSwift 一点理解

这本书可以你用 Swift 来编写响应式编程代码。...RxSwift 本质其实就是当你数据或者对象发生变化时候他会把这个变化放在一个单独管道 (队列) 里面,以此来达到简化异步并发过程目的 <br...和键盘弹出和收起动画之间关系 从网上下载大图片 往硬盘里面存数据 播放视频 以上所有东西看似是发生在同一时刻其实真的是吗?...我们思考一个问题:比如你在看视频,这时候点击了 textfield 弹出键盘,大家都知道键盘由下往上弹出是有一个动画,就算键盘已经出现到了屏幕上,只要动画没有做完你视频就不会暂停,真的是这样吗,内部又是如何实现...这个可说不准,因为如果在用户两次点击之间又有其他线程对这个数组进行了操作 (增加、删除元素) 那么数据就会发生错乱。

55540

《Motion Design for iOS》(三十三)

记得之前我提到过在动画中layer上很多属性值都不会改变么?以及presentation model layer是Core Animation用来存储动画发生过程中精确变更值?...锁着这是一块正统代码,好在其非常简单,而且现在你应该习惯了JNWSpringAnimation代码块样子。这是目前动画看起来样子。...现在是时候添加这个界面的其他动画了,即当用户点击地图图标且地图可见时,我们想要将其淡出并且将主app背景放回到前面。...因为它和我们刚才展示动画除了开始和结束值外完全一样,这里就直接放一个大块来解释发生了什么。...// 少时间是好,因为我们要回到界面的默认状态,而此时用户只想地图赶紧消失。

32920

《Motion Design for iOS》(九)

但这还不是你考试思考动画和设计动作需要知道全部。 现在是时候开始布局动画蓝图了。这是指准确描述动画中每一步将会发生什么说明。...如我之前提到,你不能在开会时候仅仅挥舞你手臂来解释当用户点击一个按钮时候发生什么,你需要一个语言来描述和拆分你在想想一个界面元素运动时头脑中发生事情。...在你创建之前,你下一步应该是思考将其化为细粒度并且写下动画各个部分细节。这就是动画计划。 对于每个动画元素,在我开始写代码之前我喜欢思考以下几点。 元素初始属性是什么?只是在屏幕底部?...动画应该持续多长时间?在这个初始阶段要知道动画准确时间是很难,所以我喜欢把时间转化为我打响指时间长度。一个响指?三个响指?因为要在结束移动前进行弹跳所以是五个响指? 元素动画时候发生什么?...通常你会同时动画很多事情,时间上一个个错开。作为整体一部分来思考这些次级动画很重要。 元素结束动画时候发生什么?当你动画结束时候应该移除元素吗?

21210

Fragment全解析系列(一):那些年踩过

如果你app当前或以后有移植平板等平台时,可以你节省大量时间和精力。...在这之前为了方便后面文章介绍,先规定一个“术语”,安卓app有一种特殊情况,就是 app运行在后台时候,系统资源紧张时候导致把app资源全部回收(杀死app进程),这时把app再从后台返回到前台时...发现这BUG时候,我一脸懵比,幸好,stackoverflow上有大神给出了解决方案!...同时如果发生“内存重启”后,因为Fragment转场动画没结束时再执行其他方法,会导致Fragment状态不会被FragmentManager正常保存下来。...Tip: 如果你遇到FragmentmNextAnim空指针异常(通常是在你Fragment被重启情况下),那么你首先需要检查是否操作Fragment是否为null;其次在你

3K20
领券