首页
学习
活动
专区
圈层
工具
发布

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

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

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

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

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

    3.2K30

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

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

    2.7K30

    《曲线里的动效语法:贝塞尔曲线如何让CSS动画拥有叙事感》

    这种叙事感让动效超越了功能层面,成为与用户对话的视觉语言。在模态框弹出的动画中,这种叙事性尤为明显。...四个控制点如同磁场中的磁极,它们的位置决定了曲线在空间中的"受力方向"——靠近起始点的控制点,会像强磁场般将曲线向自身拉扯,让动画初始阶段的变化更贴近这个点的"意愿";远离终点的控制点,则会在曲线末端制造一股..."拉力",让动画收尾时带着向它靠近的趋势。...比如设计一个按钮被点击时的凹陷效果,前半段用陡峭曲线让按钮快速缩小(模拟按下的发力),后半段用平缓曲线让它慢慢回弹(模拟弹性材料的卸力),两个阶段的斜率变化精准对应了"按压-回弹"的物理反馈,无需真实的...触摸屏幕时,用户的手指动作本身就带着自然的加速度(从接触到发力有微小延迟),因此按钮反馈动画若用前缓后急的曲线,会与手指动作的节奏形成"共振",让"点击-反馈"的过程显得天衣无缝;反之,若用匀速动画,会产生微妙的

    25710

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

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

    1.4K20

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

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

    60310

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

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

    1.7K50

    《iOS Human Interface Guidelines》

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

    1.9K40

    iOS 开发从 UIView 动画说起

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

    2.2K70

    《Motion Design for iOS》(三)

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

    45420

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

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

    3.2K50

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

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

    3.3K20

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

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

    2.6K21

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

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

    1.5K40

    关于 RxSwift 的一点理解

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

    81440

    《Motion Design for iOS》(九)

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

    34910

    《Motion Design for iOS》(三十三)

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

    49120
    领券