view

阅读 / 问答 / 标签

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了 传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。 甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我 (手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件 (constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary 布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以 认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动 这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了 传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。 甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我 (手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件 (constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary 布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以 认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动 这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了 传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。 甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我 (手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件 (constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary 布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以 认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动 这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了 传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。 甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我 (手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件 (constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary 布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以 认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动 这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何做优化,UITabelView才能更加顺滑

我相信大多数阅读这篇文章的人都知道这些方法,但一些人,即便是使用过这些方法,也没有以正确的姿式来使用它们。首先是重用cell/header/footer的单个实例,即便是我们需要显示多个。这是优化UIScrollView(UITableView的父类)最明显的方式,UIScrollView是由苹果的工程师提供的。为了正确的使用它,你应该只有cell/header/footer类,一次性初始化它们,并返回给UITableView。在苹果的开发文档里面已经描述了重用cell的流程,在这就没有必须再重复了。但重要的事情是:在UITableView的dataSource中实现的tableView:cellForRowAtIndexPath:方法,需要为每个cell调用一次,它应该快速执行。所以你需要尽可能快地返回重用cell实例。不要在这里去执行数据绑定,因为目前在屏幕上还没有cell。为了执行数据绑定,可以在UITableView的delegate方法tableView:willDisplayCell:forRowAtIndexPath:中进行。这个方法在显示cell之前会被调用。第二点也不难理解,但是有一件事需要解释一下。这个方法对于cell定高的UITableView来说没有意义,但如果由于某些原因需要动态高度的cell的话,这个方法可以很容易地让滑动更流畅。正如我们所知,UITableView是UIScrollView的子类,而UIScrollView的作用是让用户可以与比屏幕实际尺寸更大的区域交互。任何UIScrollView的实例都使用诸如contentSize、contentOffset和其它许多属性来将正确的区域显示给用户。但是UITableView的问题在哪?正如所解释的一样,UITableView不会同时维护所有cell的实例。相反,它只需要维护显示给用户的那些cell。那么,UITableView是如何知道它的contentSize呢?它是通过计算所以cell的高度之和来计算contentSize的值。UITableView的delegate方法tableView:heightForRowAtIndexPath:会为每个cell调用一次,所以你应该非常快地返回高度值。很多人会犯一个错误,他们会在布局初始化cell实例并绑定数据后去获取它们的高度。如果你想优化滑动的性能,就不应该以这种方式来计算cell的高度,因为这事难以置信的低效,iOS设备标准的60 FPS将会降低到15-20 FPS,滑动会变得很慢。如果我们没有一个cell的实例,那如何去计算它的高度呢?这里有一段示例代码,它使用类方法,并基于传入的宽度及显示的数据来计算高度值:可以用以下方式来使用上面这个方法返回高度值给UITableView:你在实现这一切的时候能获得了多少乐趣呢?大多数人会说没有。我没有保证过这事很容易。当然,我们可以构建我们自己的类来手动布局和计算高度,但有时候我们没有足够的时间来做这件事。你可以在Telegram的iOS应用代码中找到这种实现的例子。从iOS 8开始,我们可以在UITableView的delegate中使用自动高度计算,而不需要实现上面提到的方法。为了实现这一功能,你可能会使用AutoLayout,并将rowHeight变量设置为UITableViewAutomaticDimension。可以在StackOverflow中找到更多详细的信息。尽管可以使用这些方法,但我强烈建议不要使用它们。另外,我也不建议使用复杂的数学计算来获取cell的高度,如果可能,只使用加、减、乘、除就可以。但如果是AutoLayout呢?它真的跟我所说的一样慢么?你可能会很惊讶,但这是事实。如果你想让你的App在所有设备上都能平滑的滚动,你就会发现这种方法难以置信的慢。你使用的子视图越多,AutoLayout的效率越低。AutoLayout相对低效的原因是隐藏在底层的命名为”Cassowary“的约束求解系统。如果布局中子视图越多,那么需要求解的约束也越多,进而返回cell给UITableView所花的时间也越多。哪一个更快呢:使用少量的值来执行基本的数学计算,还是找一个求解大量线性等式或不等式的系统么?现在想像一下,用户想要快速地滑动,每个cell的自动布局也执行着疯狂的计算。使用内建方法优化UITableView的正确方法是:重用cell实例:对于特殊类型的cell,你应该只有一个实例,而没有更多。不要在cellForRowAtIndexPath:方法中绑定数据,因为在此时cell还没有显示。可以使用UITableView的delegate中的tableView:willDisplayCell:forRowAtIndexPath:方法。快速计算cell高度。对于工程师来说这是常规工作,但你将会为优化复杂cell的平滑滑动所付出的耐心而获取回报。我们需要更深一步当然,上面提到的这些点不足以实现真正的平滑滚动,特别是当你需要实现一些复杂的cell(如有大量的渐变、视图、交互元素、一些修饰元素等等)时,这变得尤其明显。这种情况下,UITableView很容易变得缓慢,即便是做了上面所有的事情。UITableViewCell中的视图越多,滑动时FPS越低。但在使用了手动布局和优化了高度计算后,问题就不在布局了,而在渲染了。让我们把关注点放在UIView的opaque属性上。文档中说它用于辅助绘图系统定义UIView是否透明。如果不透明,则绘图系统在渲染视图时可以做一些优化,以提高性能。我们需要性能,或者不是?用户可能快速地滑动table,如使用scrollsToTop特性,但他们可能没有最新的iPhone,所以cell必须快速地被渲染。比通常的视图更快。渲染最慢的操作之一是混合(blending)。混合操作由GPU来执行,因为这个硬件就是用来做混合操作的(当然不只是混合)。你可能已经猜到,提高性能的方法是减少混合操作的次数。但在此之前,我们需要找到它。让我们来试试。在iOS模拟器上运行App,在模拟器的菜单中选择"Debug‘,然后选中"Color Blended Layers‘。然后iOS模拟器就会将全部区域显示为两种颜色:绿色和红色。绿色区域没有混合,但红色区域表示有混合操作。正如你所看到的一样,在cell中至少有两处执行了混合操作,但你可能看不出差别来(这个混合操作是不必要的)。每种情况都应该仔细研究,不同的情况需要使用不同的方法来避免混合。在我这里,我需要做的只是设置backgroundColor来实现非透明。但有时候可能更复杂。看看这个:我们有一个渐变,但是没有混合。如果想要使用CAGradientLayer来实现这个效果,你将会很失望:在iPhone 6中FPS将会降到25-30,快速滑动变得不可能。这确实发生了,因为我们混合了两个不同层的内容:UILabel的CATextLayer和我们的CAGradientLayer。如果能正确地利用了CPU和GPU资源,它们将会均匀地负载,FPS保持在60帧。看起来就像下面这样:当设备需要执行很多混合操作时,问题就出现了:GPU是满载的,但CPU却保持低负载,而显得没有太大用处。大多数工程师在2010年夏季末时都面临这个问题,当时发布了iPhone 4。Apple发布了革命性的Retina显示屏和…非常普通的GPU。然而,通常情况下它仍然有足够的能力,但上面描述的问题却变得越来越频繁。你可以在当前运行iOS 7系统的iPhone 4上看到这一现象—所有的应用都变得很慢,即使是最简单的应用。不过,应用这篇文章中的介绍的方法,即使是在这种情况下,你的应用也能达到60 FPS,尽管会有些困难。所以,需要怎么做呢?事实上,解决方案是:使用CPU来渲染!这将不会加载GPU,这样就无法执行混合操作。例如,在执行动画的CALayer上。我们可以在UIView的drawRect:方法中使用CoreGraphics操作来执行CPU渲染,如下所示:这段代码nice么?我会告诉你并非如此。甚至通过这种方式,你会撤销在一些UIView上(在任何情况下,它们都是不必要的)的所有缓存优化操作。但是,这种方法禁用了一些混合操作,卸载GPU,从而使UITableView的更顺畅。但是记住:这提高了渲染性能,不是因为CPU比GPU更快!它可以让我们通过为让CPU来执行某些渲染任务,从而卸载GPU,因为在很多情况下,CPU可能不是100%负载的。优化混合操作的关键点是在平衡CPU和GPU的负载。优化UITableView中绘制数据操作的小结:减少iOS执行无用混合的区域:不要使用透明背景,使用iOS模拟器或者Instruments来确认这一点;如果可以,尽量使用没有混合的渐变。优化代码,以平衡CPU和GPU的负载。你需要清楚地知道哪部分渲染需要使用GPU,哪部分可以使用CPU,以此保持平衡。为特殊的cell类型编写特殊的代码。像素获取你知道像素看起来是什么样的么?我的意思是,屏幕上的物理像素是什么样的?我肯定你知道,但我还是想让你看一下:不同的屏幕有不同的制作工艺,但有一件事是一样的。事实上,每个物理像素由三个颜色的子像素组成:红、绿、蓝。基于这一事实,像素不是原子单位,虽然对于应用来说它是。或者仍然不是?直到带有Retina屏的iPhone 4发布前,物理像素都可以用整型点坐标来描述。自从有了Retina屏后,在Cocoa Touch环境下,我们就可以用屏幕点来取代像素了,同时屏幕点可以是浮点值。在完美的世界中(我们尝试构建的),屏幕点总是被处理成物理像素的整型坐标。但在现实生活中它可能是浮点值,例如,线段可能起始于x为0.25的地方。这时候,iOS将执行子像素渲染。这一技术在应用于特定类型的内容(如文本)时很有意义。但当我们绘制平滑直线时则没有必要。如果所有的平滑线段都使用子像素渲染技术来渲染,那你会让iOS执行一些不必要的任务,从而降低FPS。什么情况下会出现这种不必要的子像素抗锯齿操作呢?最常发生的情况是通过代码计算而变成浮点值的视图坐标,或者是一些不正确的图片资源,这些图片的大小不是对齐到屏幕的物理像素上的(例如,你有一张在Retina显示屏上的大小为6061的图片,而不是6060的)。在前面我们讲到,要解决问题,首先需要找到问题在哪。在iOS模拟器上运行程序,在”Debug“菜单中选中”Color Misaligned Image“。这一次有两种高亮区域:品红色区域会执行子像素渲染,而黄色区域是图片大小没有对齐的情况。那如何在代码中找到对应的位置呢?我总是使用手动布局,并且部分会自定义绘制,所以通常找到这些地方没有任何问题。如果你使用Interface Builder,那我对此深表同情。通常,为了解决这个问题,你只要简单地使用ceilf, floorf和CGRectIntegral方法来对坐标做四舍五入处理。就是这样!通过上面的讨论,我想建议你以下几点:对所有像素相关的数据做四舍五入处理,包括点坐标,UIView的高度和宽度。跟踪你的图像资源:图片必须是像素完美的,否则在Retina屏幕上渲染时,它会做不必要的抗锯齿处理。定期复查你的代码,因为这种情况可以会经常出现。异步UI可能这看起来有点奇怪,但这是一种非常有效的方法。如果你知道如何做,那么可以让UITableView滑动得更平滑。现在我们来讨论一下你应该做什么,然后再讨论下你是否可能这么做。每个中等以上规模的应用都可能会使用带有媒体内容的cell:文本、图片、动画,甚至还有视频。而所有这些都可能带有装饰元素:圆角头像、还"#‘号的文本、用户名等。我们已经多次提及尽可能快地返回cell的需求,而在这里有一些麻烦:clipsToBounds很慢,图片需要从网络加载,需要在字符串中定位#号,和许多其它的问题。优化的目标是很明确的:如果在主线程中执行这些操作,则会让你不能很快地返回cell。在后台加载图片,在相同的地方处理圆角,然后将处理后的图片指定给UIImageView。立刻显示文本,但在后台定位#号,然后使用属性字符串来刷新显示。在你的cell中,需要具体情况具体分析,但主要的思想是在后台执行大的操作。这可能不止是网络代码,你需要使用Instruments来找到它们。记住:需要尽快返回cell。有时候,上面的所有技术可能都帮不上忙。如GPU仍然不能使用(iPhone4+iOS7)时,cell中有很多内容时,需要CALayer的支持以实现动画时(因为在drawRect:中实现起来真的很麻烦)。在这种情况下,我们需要在后台渲染所有其它东西。此外它能在用户快速滑动UITableView时有效地提高FPS。我们来看看Facebook的应用。为了检测这些,你可能需要往下滑足够的高度,然后点击状态栏。列表会往上滑动,因此你可以清楚地看到此时没有渲染cell。如果想要更精确,则不能及时获得。这很简单,所以你可以自己试试。这时,你需要设置CALayer的drawsAsynchronously属性为YES。但是我们可以检查这些行为的必要性。在iOS模拟器上运行程序,然后选择“Debug”菜单中的”Color Offscreen-Rendered“。现在所有在后台渲染的区域都被高亮为黄色。如果你为某些层开启了这一模式,但是它没有高亮显示,那么它就不够慢。为了在CALyaer层找到瓶颈并进一步减少它,你可以使用Instruments里面的Time Profiler。这里是异步化UI的实现清单:找到让你的cell无法快速返回的瓶颈。将操作移到后台线程,并在主线程刷新显示的内容。最后一招是设置你的CALayer为异步显示模式(即使只是简单的文本或图片)—这将帮你提高FPS。结论我尝试解释了iOS绘图系统(没有使用OpenGL,因为它的情况更少)的主要思路。当然有些看起来很模糊,但事实上这只是一些方向,你应该朝着这些方向来检查你的代码以找出影响滚动性能的所有问题。具体情况具体分析,但原则是不变的。获取完美平滑滚动的关键是非常特殊的代码,它能让你竭尽iOS的能力来让你的应用更加平滑。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

求助,最近使用UIView+AutolayOut有个问题非常之不解

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。一、预期效果 下面我们以一个简单的例子来进行详细的说明: 如 上图所示,整个界面都使用了autolayout,现在我们想实现这样一个效果:当我们点击显示生日的按钮的时候,整个view向上滑动,同时向上推出一个日期选取器(date picker),类似于点击textfield,弹出键盘后整个界面为了避免被遮住而向上移动的效果。选取完成日期后点击生日日期按钮或者完成按钮整个view向下缩回,同时date picker向下滑出可视范围。二、实现细节 首先来看一眼storyboard中view的层级结构:如下图所示,从图中我们可以看到,整个view的布局相当简单,就两级:根view和我们的date picker view,其中date picker view包含了一个完成按钮和系统的date picker。这样的话,要实现整个view和date picker view同时上移的效果,我们只需要对根view和date picker view同时做动画即可。 考虑如何实现根view的动画效果,这里我们可以巧妙的通过修改根view的bounds属性来实现根view的上移效果。注意这里我们需要明白view的bounds属性和frame属性的区别,前者是相对于当前view的本地坐标系而言的,而后者则是相对于当前view的父view的坐标系而言的。 简单的讲,frame决定了一个view相对于父view的position和size信息。而bounds则决定了当前view展示的内容相对于本地坐标系的位置。这里我们将view自身的可视内容和subviews可以看做一页纸上的内容信息,而view本身可以看成是一枚放于纸上的放大镜,放大镜的大小不一定是和纸(content size)相同大小的。bounds属性的作用就是确定这枚放大镜相对于纸的位置:一个bounds =(0, 200, 300, 300)就意味着我们要将这枚放大镜向纸的下方移动200个points,但放大镜相对于父view的位置仍是保持不变的,这样给我们的效果就是这个view(显示的内容)向上移动了200个points. 改动bounds的origin属性并不会改动这个view的frame,通过这种展示内容的移动给我们产生一种view向上移动了的幻觉。如上图中,“哪个位置...”为成为我们放大镜中看到的第一行。 根view上移动画的效果解决了,下面我们再来看日期选取器date picker,在storyboard中对其增加的约束如下:定高207、trailing/leading/top相对于super view (根view)的位置。 确定date picker view y轴方向上下移动的约束显然是top约束,点开top约束,可以看到该约束的详细内容: 一个约束可以描述为:firstItem.attributeA = secondItem.attributeB * multipler + constant。结合上图我们可以得出date picker view的top约束为:datePickerView.Top = topLayoutGuide.bottom * 1 + 400 我们可以通过修改这里的constant值来修改这个top约束以达到预期效果,事实上通过修改而不是删除旧的constraint再添加新的constraint也正是苹果所推荐的,在NSLayoutConstraint.h头文件中有如下说明: 这样,date picker view的上下移动就可以通过获取并修改其top约束来实现。需要注意的是在代码中获取date picker view的top约束实际上是要在其父view的constraints数组中查找,这是因为每个view的constraints数组中保存的实际上是layout 子view所需的约束的集合。我们还要定义个辅助BOOL变量,已判断date picker view是否以弹出:<span style="font-size:18px;">@property (nonatomic, assign) BOOL hasShowPickerView;</span>接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:- (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant{ for (NSLayoutConstraint *constraint in self.pickerContainerView.superview.constraints) { if (constraint.firstItem == self.pickerContainerView && constraint.firstAttribute == NSLayoutAttributeTop) { constraint.constant = constant; } }} 代码 里我们在picker container view (即文中的date picker view)的superview的constraints属性中查找,如果发现firstItem和firstAttribute属性分别是date picker view和top,则该constraint即为目标约束,然后修改其constant属性。在view首次被加载的时候我们想确保date picker view 处于整个view的最底部即隐藏的状态,因而我们在viewcontroller的viewDidLoad方法中调用辅助方法修改一下date picker view的top约束:<span style="font-size:18px;"> [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];</span>在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:<span style="font-size:18px;">- (IBAction)didTapOnBirthdayButton:(id)sender{ self.hasShowPickerView = !self.hasShowPickerView; if (self.hasShowPickerView) { CGRect birthdayButtonFrame = self.birthdayButton.frame; birthdayButtonFrame = [self.view convertRect:birthdayButtonFrame fromView:self.birthdayButton.superview]; CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height; CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height); CGRect bounds = self.view.bounds; if (gap > 0) { bounds.origin.y = gap; } else { gap = 0; } [self replacePickerContainerViewTopConstraintWithConstant:birthdayButtonYOffset]; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; } else { [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height]; CGRect bounds = self.view.bounds; bounds.origin.y = 0; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; }}</span>上述代码中的[self.view layoutIfNeed]去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。 至此程序达到了预期的效果。

求助,最近使用UIView+AutolayOut有个问题非常之不解

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。一、预期效果 下面我们以一个简单的例子来进行详细的说明: 如 上图所示,整个界面都使用了autolayout,现在我们想实现这样一个效果:当我们点击显示生日的按钮的时候,整个view向上滑动,同时向上推出一个日期选取器(date picker),类似于点击textfield,弹出键盘后整个界面为了避免被遮住而向上移动的效果。选取完成日期后点击生日日期按钮或者完成按钮整个view向下缩回,同时date picker向下滑出可视范围。二、实现细节 首先来看一眼storyboard中view的层级结构:如下图所示,从图中我们可以看到,整个view的布局相当简单,就两级:根view和我们的date picker view,其中date picker view包含了一个完成按钮和系统的date picker。这样的话,要实现整个view和date picker view同时上移的效果,我们只需要对根view和date picker view同时做动画即可。 考虑如何实现根view的动画效果,这里我们可以巧妙的通过修改根view的bounds属性来实现根view的上移效果。注意这里我们需要明白view的bounds属性和frame属性的区别,前者是相对于当前view的本地坐标系而言的,而后者则是相对于当前view的父view的坐标系而言的。 简单的讲,frame决定了一个view相对于父view的position和size信息。而bounds则决定了当前view展示的内容相对于本地坐标系的位置。这里我们将view自身的可视内容和subviews可以看做一页纸上的内容信息,而view本身可以看成是一枚放于纸上的放大镜,放大镜的大小不一定是和纸(content size)相同大小的。bounds属性的作用就是确定这枚放大镜相对于纸的位置:一个bounds =(0, 200, 300, 300)就意味着我们要将这枚放大镜向纸的下方移动200个points,但放大镜相对于父view的位置仍是保持不变的,这样给我们的效果就是这个view(显示的内容)向上移动了200个points. 改动bounds的origin属性并不会改动这个view的frame,通过这种展示内容的移动给我们产生一种view向上移动了的幻觉。如上图中,“哪个位置...”为成为我们放大镜中看到的第一行。 根view上移动画的效果解决了,下面我们再来看日期选取器date picker,在storyboard中对其增加的约束如下:定高207、trailing/leading/top相对于super view (根view)的位置。 确定date picker view y轴方向上下移动的约束显然是top约束,点开top约束,可以看到该约束的详细内容: 一个约束可以描述为:firstItem.attributeA = secondItem.attributeB * multipler + constant。结合上图我们可以得出date picker view的top约束为:datePickerView.Top = topLayoutGuide.bottom * 1 + 400 我们可以通过修改这里的constant值来修改这个top约束以达到预期效果,事实上通过修改而不是删除旧的constraint再添加新的constraint也正是苹果所推荐的,在NSLayoutConstraint.h头文件中有如下说明: 这样,date picker view的上下移动就可以通过获取并修改其top约束来实现。需要注意的是在代码中获取date picker view的top约束实际上是要在其父view的constraints数组中查找,这是因为每个view的constraints数组中保存的实际上是layout 子view所需的约束的集合。我们还要定义个辅助BOOL变量,已判断date picker view是否以弹出:<span style="font-size:18px;">@property (nonatomic, assign) BOOL hasShowPickerView;</span>接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:- (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant{ for (NSLayoutConstraint *constraint in self.pickerContainerView.superview.constraints) { if (constraint.firstItem == self.pickerContainerView && constraint.firstAttribute == NSLayoutAttributeTop) { constraint.constant = constant; } }} 代码 里我们在picker container view (即文中的date picker view)的superview的constraints属性中查找,如果发现firstItem和firstAttribute属性分别是date picker view和top,则该constraint即为目标约束,然后修改其constant属性。在view首次被加载的时候我们想确保date picker view 处于整个view的最底部即隐藏的状态,因而我们在viewcontroller的viewDidLoad方法中调用辅助方法修改一下date picker view的top约束:<span style="font-size:18px;"> [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];</span>在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:<span style="font-size:18px;">- (IBAction)didTapOnBirthdayButton:(id)sender{ self.hasShowPickerView = !self.hasShowPickerView; if (self.hasShowPickerView) { CGRect birthdayButtonFrame = self.birthdayButton.frame; birthdayButtonFrame = [self.view convertRect:birthdayButtonFrame fromView:self.birthdayButton.superview]; CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height; CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height); CGRect bounds = self.view.bounds; if (gap > 0) { bounds.origin.y = gap; } else { gap = 0; } [self replacePickerContainerViewTopConstraintWithConstant:birthdayButtonYOffset]; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; } else { [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height]; CGRect bounds = self.view.bounds; bounds.origin.y = 0; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; }}</span>上述代码中的[self.view layoutIfNeed]去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。 至此程序达到了预期的效果。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

 当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)

如何对使用了autolayout的UIView添加动画

  当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在 storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是 Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。  现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我 们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。  一、预期效果  下面我们以一个简单的例子来进行详细的说明:  如上图所示,整个界面都使用了autolayout,现在我们想实现这样一个效果:当我们点击显示生日的按钮的时候,整个view向上滑动,同时向上推出一 个日期选取器(date picker),类似于点击textfield,弹出键盘后整个界面为了避免被遮住而向上移动的效果。选取完成日期后点击生日日期按钮或者完成按钮整个 view向下缩回,同时date picker向下滑出可视范围。  二、实现细节  首先来看一眼storyboard中view的层级结构:如下图所示,从图中我们可以看到,整个view的布局相当简单,就两级:根view和我们的 date picker view,其中date picker view包含了一个完成按钮和系统的date picker。这样的话,要实现整个view和date picker view同时上移的效果,我们只需要对根view和date picker view同时做动画即可。  考虑如何实现根view的动画效果,这里我们可以巧妙的通过修改根view的bounds属性来实现根view的上移效果。注意这里我 们需要明白view的bounds属性和frame属性的区别,前者是相对于当前view的本地坐标系而言的,而后者则是相对于当前view的父view的坐标系而言的。  简单的讲,frame决定了一个view相对于父view的position和size信息。而bounds则决定了当前view展示的内容相对于本地坐 标系的位置。这里我们将view自身的可视内容和subviews可以看做一页纸上的内容信息,而view本身可以看成是一枚放于纸上的放大镜,放大镜的 大小不一定是和纸(content size)相同大小的。bounds属性的作用就是确定这枚放大镜相对于纸的位置:一个bounds =(0, 200, 300, 300)就意味着我们要将这枚放大镜向纸的下方移动200个points,但放大镜相对于父view的位置仍是保持不变的,这样给我们的效果就是这个 view(显示的内容)向上移动了200个points.  改动bounds的origin属性并不会改动这个view的frame,通过这种展示内容的移动给我们产生一种view向上移动了的幻觉。如上图中,“哪个位置...”为成为我们放大镜中看到的第一行。  根view上移动画的效果解决了,下面我们再来看日期选取器date picker,在storyboard中对其增加的约束如下:定高207、trailing/leading/top相对于super view (根view)的位置。  确定date picker view y轴方向上下移动的约束显然是top约束,点开top约束,可以看到该约束的详细内容:  一个约束可以描述为:  firstItem.attributeA = secondItem.attributeB * multipler + constant  结合上图我们可以得出date picker view的top约束为:  datePickerView.Top = topLayoutGuide.bottom * 1 + 400  我们可以通过修改这里的constant值来修改这个top约束以达到预期效果,事实上通过修改而不是删除旧的constraint再添加新的constraint也正是苹果所推荐的,在NSLayoutConstraint.h头文件中有如下说明:  这样,date picker view的上下移动就可以通过获取并修改其top约束来实现。需要注意的是在代码中获取date picker view的top约束实际上是要在其父view的constraints数组中查找,这是因为每个view的constraints数组中保存的实际上是 layout 子view所需的约束的集合。  我们还要定义个辅助BOOL变量,已判断date picker view是否以弹出:  @property (nonatomic, assign) BOOL hasShowPickerView;  接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:  - (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant{    for (NSLayoutConstraint *constraint in self.pickerContainerView.superview.constraints) {        if (constraint.firstItem == self.pickerContainerView && constraint.firstAttribute == NSLayoutAttributeTop) {            constraint.constant = constant;        }    }}  代码里我们在picker container view (即文中的date picker view)的superview的constraints属性中查找,如果发现firstItem和firstAttribute属性分别是date picker view和top,则该constraint即为目标约束,然后修改其constant属性。  在view首次被加载的时候我们想确保date picker view 处于整个view的最底部即隐藏的状态,因而我们在viewcontroller的viewDidLoad方法中调用辅助方法修改一下date picker view的top约束:  [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];  在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:  - (IBAction)didTapOnBirthdayButton:(id)sender{  self.hasShowPickerView = !self.hasShowPickerView;  if (self.hasShowPickerView) {    CGRect birthdayButtonFrame = self.birthdayButton.frame;    birthdayButtonFrame = [self.view convertRect:birthdayButtonFrame fromView:self.birthdayButton.superview];    CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height;    CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height);    CGRect bounds = self.view.bounds;    if (gap > 0) {      bounds.origin.y = gap;    } else {      gap = 0;    }    [self replacePickerContainerViewTopConstraintWithConstant:birthdayButtonYOffset];    [UIView animateWithDuration:0.25 animations:^{      self.view.bounds = bounds;      [self.view layoutIfNeeded];    }];  } else {    [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];    CGRect bounds = self.view.bounds;    bounds.origin.y = 0;    [UIView animateWithDuration:0.25 animations:^{      self.view.bounds = bounds;      [self.view layoutIfNeeded];    }];  }}  上述代码中的[self.view layoutIfNeed]去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。  至此程序达到了预期的效果。

如何在 AutoLayout 中使用 UIScrollView

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何在AutoLayout中使用 UIScrollView

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档:点击打开链接),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

如何对使用了autolayout的UIView添加动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。一、预期效果 下面我们以一个简单的例子来进行详细的说明: 如 上图所示,整个界面都使用了autolayout,现在我们想实现这样一个效果:当我们点击显示生日的按钮的时候,整个view向上滑动,同时向上推出一个日期选取器(date picker),类似于点击textfield,弹出键盘后整个界面为了避免被遮住而向上移动的效果。选取完成日期后点击生日日期按钮或者完成按钮整个view向下缩回,同时date picker向下滑出可视范围。二、实现细节 首先来看一眼storyboard中view的层级结构:如下图所示,从图中我们可以看到,整个view的布局相当简单,就两级:根view和我们的date picker view,其中date picker view包含了一个完成按钮和系统的date picker。这样的话,要实现整个view和date picker view同时上移的效果,我们只需要对根view和date picker view同时做动画即可。 考虑如何实现根view的动画效果,这里我们可以巧妙的通过修改根view的bounds属性来实现根view的上移效果。注意这里我们需要明白view的bounds属性和frame属性的区别,前者是相对于当前view的本地坐标系而言的,而后者则是相对于当前view的父view的坐标系而言的。 简单的讲,frame决定了一个view相对于父view的position和size信息。而bounds则决定了当前view展示的内容相对于本地坐标系的位置。这里我们将view自身的可视内容和subviews可以看做一页纸上的内容信息,而view本身可以看成是一枚放于纸上的放大镜,放大镜的大小不一定是和纸(content size)相同大小的。bounds属性的作用就是确定这枚放大镜相对于纸的位置:一个bounds =(0, 200, 300, 300)就意味着我们要将这枚放大镜向纸的下方移动200个points,但放大镜相对于父view的位置仍是保持不变的,这样给我们的效果就是这个view(显示的内容)向上移动了200个points. 改动bounds的origin属性并不会改动这个view的frame,通过这种展示内容的移动给我们产生一种view向上移动了的幻觉。如上图中,“哪个位置...”为成为我们放大镜中看到的第一行。 根view上移动画的效果解决了,下面我们再来看日期选取器date picker,在storyboard中对其增加的约束如下:定高207、trailing/leading/top相对于super view (根view)的位置。 确定date picker view y轴方向上下移动的约束显然是top约束,点开top约束,可以看到该约束的详细内容: 一个约束可以描述为:firstItem.attributeA = secondItem.attributeB * multipler + constant。结合上图我们可以得出date picker view的top约束为:datePickerView.Top = topLayoutGuide.bottom * 1 + 400 我们可以通过修改这里的constant值来修改这个top约束以达到预期效果,事实上通过修改而不是删除旧的constraint再添加新的constraint也正是苹果所推荐的,在NSLayoutConstraint.h头文件中有如下说明: 这样,date picker view的上下移动就可以通过获取并修改其top约束来实现。需要注意的是在代码中获取date picker view的top约束实际上是要在其父view的constraints数组中查找,这是因为每个view的constraints数组中保存的实际上是layout 子view所需的约束的集合。我们还要定义个辅助BOOL变量,已判断date picker view是否以弹出:<span style="font-size:18px;">@property (nonatomic, assign) BOOL hasShowPickerView;</span>接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:- (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant{ for (NSLayoutConstraint *constraint in self.pickerContainerView.superview.constraints) { if (constraint.firstItem == self.pickerContainerView && constraint.firstAttribute == NSLayoutAttributeTop) { constraint.constant = constant; } }} 代码 里我们在picker container view (即文中的date picker view)的superview的constraints属性中查找,如果发现firstItem和firstAttribute属性分别是date picker view和top,则该constraint即为目标约束,然后修改其constant属性。在view首次被加载的时候我们想确保date picker view 处于整个view的最底部即隐藏的状态,因而我们在viewcontroller的viewDidLoad方法中调用辅助方法修改一下date picker view的top约束:<span style="font-size:18px;"> [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height];</span>在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:<span style="font-size:18px;">- (IBAction)didTapOnBirthdayButton:(id)sender{ self.hasShowPickerView = !self.hasShowPickerView; if (self.hasShowPickerView) { CGRect birthdayButtonFrame = self.birthdayButton.frame; birthdayButtonFrame = [self.view convertRect:birthdayButtonFrame fromView:self.birthdayButton.superview]; CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height; CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height); CGRect bounds = self.view.bounds; if (gap > 0) { bounds.origin.y = gap; } else { gap = 0; } [self replacePickerContainerViewTopConstraintWithConstant:birthdayButtonYOffset]; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; } else { [self replacePickerContainerViewTopConstraintWithConstant:self.view.frame.size.height]; CGRect bounds = self.view.bounds; bounds.origin.y = 0; [UIView animateWithDuration:0.25 animations:^{ self.view.bounds = bounds; [self.view layoutIfNeeded]; }]; }}</span>上述代码中的[self.view layoutIfNeed]去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。 至此程序达到了预期的效果。

如何使用block实现uiview动画

当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在 storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是 Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。  现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我 们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。

adp的GlobalView;

ADP GlobalView;是由ADP雇主服务推出的服务于大型跨国企业的人力资源外包(HRO)解决方案,目前已覆盖全球近50个国家和地区。迄今,已经有80多家跨国公司选择GlobalView为其分布在全球各地的100多万名员工提供人力资源外包服务。在优秀的服务和技术支持下,GlobalView的服务专家以SAP的人力资本管理(HCM)解决方案为基础,提供多语言、多币种的领先的全球HRO整合服务。ADP GlobalView 通过整合的、多语言、多币种的人力资源外包服务帮助跨国企业雇主控制综合风险以及保证全球服务的统一性,从而协助企业发展人力资源策略。客户可以在统一的平台上享受多语言、多币种的服务,应用通用的薪酬和人力资源政策、浏览系统整理后的报告、并获得全球三个区域所有服务中心的服务专家所提供的知识和信息。

the students expected there being more reviewing classes before the final exam中,为什么是there bein

expect somebody doing something. ???~ IDK man.

The students are kept busy reviewing their lessons

首先 BE kept 是被动语态。其次 keep doing 是词组。保持做某事。

required reviews completed 多久

  这个就是是有足够的审稿意见,不是审稿已经结束,编辑可能还再等别的审稿人意见。所以一般一周到一个月都是有可能的。如果超过了一个月,楼主可以发邮件和编辑部联系一下。   我投的这个期刊这种状态表明审稿结束。我投的期刊是这样说明的:   ‘Required Reviews Completed" – The reviewing process of your paper has been competed. The Editor will be in touch as soon as they have made a decision on your paper. It is our aim that authors will receive a first decision on their submission within 60 days of submission. In some case where the referees" comments conflict, it may be necessary to seek further opinion. As a result this may delay the review of your submission. ​

we are reviewing whether you meet the eligibility requirements要多久

we are reviewing whether you meet the eligibility requirements 我们正在评估您是否符合资格、条件需求。没说要多久哦。

什么是rolling review?

滚动式审查

Revise and Re-review算是什么状态,有没有希望被接受

Revise 意思是修正,校订。 Re-review 是重新审查    退修,然后需要重新审稿!

do some review 还是do some reviewing

do some review

如何回复审稿意见,更能打动 Reviewers?

科研人想要成功发表一篇SCI,往往要经历写作、投稿、等待这一系列漫长的过程,当在收到一篇文章返修意见的时候心里别提有多激动了。 收到返修意见说明文章已经被审稿人初步认可,为了让自己的心血不被浪费,文章能顺利发表,我们要花时间和经历去回复审稿意见,这就要求大家除了具备专业性之外,还要注意回复的语气、格式等细节 本篇文章笔者 手把手教各位科研人如何高情商回复 Reviewers ,很纯的干货,认真读完相信你一定有所收获! 1. 阅读返修意见 首先要认真阅读全部审稿意见,一般每篇文章会有 2-3 个审稿人的意见,每位审稿人的意见数量可能一两条到十几条不等。每位审稿人的意见一般会逐条列出。在阅读退修意见的过程中,我们要清楚目的,首先是弄懂每一条意见,充分 get 审稿人的要求。 其次要对所有意见有一个归纳整理,分清主次。 最后要注意除文章内容之外的一些要求,如文章修回的 deadline,补充完善作者信息等。 2. 制定回复策略 当认真读完审稿人意见之后,建议大家将所有意见复制粘贴到 word 文档,对所列意见逐条分析。根据笔者经验,所有意见可以根据难易程度分为简单、复杂、困难这三种。 下面笔者将以一些既往文章收到过的退修意见为例来向大家说明: 简单的一般是改正错别词、语法,规范格式,补充缩写词全称,提高图片质量,等等。如图 1: 图1 复杂的一般指我们通过查阅文献之后即可用事实依据解答审稿人的疑问,比如为什么选择某个药物、某个实验对象等,因为审稿人有时不一定是你所研究领域的专家,所以我们用事实说话解开审稿人的疑惑也就成功回答了这类问题。如图 2: 图2 困难的一般是指审稿人对文章涉及到的方法、结果、结论等的质疑,这些就需要各位认真斟酌,谨慎回答,切记要有理有据。如图 3: 图3 3. 编辑回复内容 分析过审稿人意见之后,我们就可以着手回复了,下面几条划重点啦: (1)我们注意要对所有的退修意见逐条进行回复 在每条意见下面写上相应回复内容,一般回复的结构为:感谢审稿人的意见+已修改的内容。可以写感谢审稿人善意的提醒/严谨的态度/专业的意见等等,表达出我们虚心学习的态度。 (2)在回复的正文内容的首和尾要分别有一段前言和一段总结 回复的语气一定要诚恳且礼貌,在内容中除了要说明修改的内容之外,还要体现感谢编辑和审稿人对文章的认可以及辛苦的工作。 (3)在回复内容的最后写上「如果有任何问题请随时联系」类似的话 这样既显示了我们认真的态度,也间接表达了我们期盼回复的心情。 (4)如有引用文献回答审稿人问题的,需在回答内容后面附上所参考文献的 DOI 编号,论点+论据会更能使审稿人信服。 下面图 4 为笔者常用的回复审稿人意见的模板,提供给大家参考。 图4 虽然每个人的稿件情况不同,回复信也都是千差万别,但多多少少还是有一定模板性的,尤其是对于第一次遇到这种情况的研究生朋友们,可以先从模板开始熟悉一下此类回复信的大体内容和形式。 模板1:精简版本 下面这个是我自己以前写的一个模板,拿出来分享给大家。 Dear Editor XX and Reviewers, Thanks very much for taking your time to review this manuscript. I really appreciate all your comments and suggestions! Please find my itemized responses in below and my revisions/corrections in the re-submitted files. (这一段基本上是套话) Thanks again! 下面就开始回复文章的审稿意见了,一般首先是回复期刊编辑的整体意见: SUGGESTIONS FROM EDITOR(注意这一段要把编辑原始的建议粘贴在这里,不能只有回应)  Your response to the general comments from the editor 接下来是逐条回应审稿人的建议: COMMENTS TO THE AUTHOR: Reviewer #1: Response to the questions one by one Reviewer #2: Response to the questions one by one 模板2: 完整版本 这个模板是完整版本,保留了很多逐条回答审稿人的常用短语和句式,值得收藏和学习! Dear Editor, Dear reviewers Thank you for your letter dated February 22. We were pleased to know that our work was rated as potentially acceptable for publication in Journal, subject to adequate revision. We thank the reviewers for the time and effort that they have put into reviewing the previous version of the manuscript. Their suggestions have enabled us to improve our work. Based on the instructions provided in your letter, we uploaded the file of the revised manuscript. Accordingly, we have uploaded a copy of the original manuscript with all the changes highlighted by using the track changes mode in MS Word. Appended to this letter is our point-by-point response to the comments raised by the reviewers. The comments are reproduced and our responses are given directly afterward in a different color (red). We would like also to thank you for allowing us to resubmit a revised copy of the manuscript. We hope that the revised manuscript is accepted for publication in the Journal of Mountain Science. Sincerely, XXXXXXX (同样是套话,这个模板写了这么长。。。虽然我不是很喜欢,但是适合拿来逐句学习,为己所用)  Reviewer 1:   Comments to the Author 这个审稿人的意见分为两部分: 第一部分是一般性的评论和修改建议(多为比较大的问题)。 Here are the general comments from the reviewer...  We thank the reviewer for the very interesting comment. In fact… Regarding the suggestion about the methods, we changed this part… Another issue on the methodological section is that...  We are grateful for the suggestion. To be more clear and in accordance with the reviewer concerns, we have added a brief description as follows: “ 接下来是第二部分“小的建议”,也就是需要逐条回复的那种,一般是用词用句的修改。 Minor comments: The title is too long, I suggest shortening.  Modified throughout the text according to the comment (Line 20, page 1).Thank you for the title suggested. The precedent version of the title has been replaced, becoming... Line 25, page 1… Modified throughout the text according to the comment (Line 20, page 1). Line 18, page 2…  We have modified the sentence according to the previous comment (Line 30, page 2).  Line 33, page 3…  Thank you for underlining this deficiency. This section was revised and modified according to the information showed in the work suggested by the reviewer (Line 41, page 3).  Line 59, page 5…  This phrase was modified according to the comment (Line 30, page 5).  Lines 9-24, page 6…  Thank you for the suggestion. We have added the information required as explained above (Lines 6-28, page 6).  Line 11, page 6…  This sentence was rephrased according to the comment (Line 8, page 6).  Line 35, page 13: “exit section”->”outlet” (please check also throughout the text, e.g. at line 54, page 13)  We have modified this expression throughout the text according to the comment. 论文的发表终究还是取决于科研硬实力,以上技巧和经验都只是锦上添花,在论文发表方面助大家一臂之力,让我们的稿件更容易被录用。最后祝每个科研人科研丰收,生活美满!

如何得到更多的reviewing

不是很清楚

review和audit有何区别?

audit:审计,强调是结果是否符合标准。review:评审,单词里面有re,就是回顾,拉通跑一遍,强调的是过程的不确定性。

under peer reviewing

在同等的人中评估 需结合前后句子,看原文说的什么内容,才好准确的翻译,只有三个单词怕翻跑题

audit engagement和review engagement有什么区别?本质的区别是什么

audit engagement审计契约review engagement复阅债务;复阅约定意思就不一样

frontier the interactive review 什么意思

frontier the interactive review 边境互动评论review 英[rɪˈvju:]美[rɪˈvju]n. 回顾; 复习; (报刊的) 评论; [法] 复审;vt. 评论; 复习; 复查; 检验;vi. 复习功课; 写评论;[例句]The president ordered a review of US economic aid to Jordan总统下令对美国向约旦提供的经济援助进行审查。[其他] 第三人称单数:reviews 复数:reviews 现在分词:reviewing 过去式:reviewed 过去分词:reviewed

keep reviewing the knowledge in mind?对不对

可以这样说,汉意为:不停地复习、记忆这些知识。

do some review 还是do some reviewing

do some reviews review作名词 可以理解成 做些回顾

"assigning for review"是在审稿的意思吗

assigning for review意思是:分配的审查assigning[əˈsainɪŋ] v. 分配( assign的现在分词 ); 指派; 指定; (作为说明或原因)提出review英 [rɪˈvju:] 美 [ rɪˈvju] n. 复习; 回顾; (报刊的)评论; [法]复审vt. 检验; 复查; 复习; 评论vi. 复习功课; 写评论;复数: reviews 过去式: reviewed 过去分词: reviewed 现在分词: reviewing 第三人称单数:reviews

Review article 和 Research article有何区别

答:首先分析review和research的具体意思。review:n.复习; 回顾; (报刊的)评论; [法]复审vt.检验; 复查; 复习; 评论vi.复习功课; 写评论REVIEWabbr.recording and video playback of electronic warfare information 电子战信息记录与视像重放变形复数: reviews 过去式: reviewed 过去分词: reviewed 现在分词: reviewing 第三人称单数: reviewsrecearch:n.研究,追究; 探讨,探测; 调查; 探索vi.做研究; 探究; (从市场调研中)得出所预测的结果vt.从事…的研究,为…而做研究变形复数: researches 过去式: researched 过去分词: researched 现在分词: researching 第三人称单数: researches分析review和research之后,可以得出结论。review article 是指对文章的回顾、复习。research article是指对文章的研究、探讨。

film reviewing

you didn"t tell us the name of the film.....

review的将来完成时

review英 [rɪˈvju:] 美 [ rɪˈvju] n. 回顾;复习;(报刊的)评论;[法]复审vt. 评论;复习;复查;检验vi. 复习功课;写评论第三人称单数: reviews 复数: reviews 现在分词: reviewing 过去式: reviewed 过去分词: reviewed

review的固定搭配

review of:复习。_,审查; 评估; 检阅; 阅兵; 中止快速倒带重放装置; 回顾; 评论; 回顾报告; 评论期刊。_,检查; 审查; 评估; 检阅; 复查; 再考察; 写(书、戏剧、电影等)评论_词? reviews,第三人称单数: reviews现在分词: reviewing过去式: reviewed过去分词: reviewed?

国外期刊文章中review by是什么意思

论文被“谁”审稿的

contract review是什么意思

contract review英[kənˈtrækt riˈvju:]美[ˈkɑnˌtrækt rɪˈvju][释义] 合同评审;

英语after reviewing your application怎么翻译?

application 申请书,申请表,正式申请收到你的申请表之后

review的四种形式

review [英][rɪ"vju:] [美][ rɪˈvju] n.复习; 回顾; (报刊的)评论; [法]复审; vt.检验; 复查; 复习; 评论; vi.复习功课; 写评论; 第三人称单数:reviews 过去分词: reviewed 复数:reviews 现在进行时: reviewing 过去式:reviewed

svn中的review什么意思

review 英[rɪˈvju:] 美[rɪˈvju] n. 回顾; 复习; (报刊的) 评论; [法] 复审; vt. 评论; 复习; 复查; 检验; vi. 复习功课; 写评论; [例句]The president ordered a review of US economic aid to Jordan总统下令对美国向约旦提供的经济援助进行审查。[其他] 第三人称单数:reviews 复数:reviews 现在分词:reviewing过去式:reviewed 过去分词:reviewed

reviewing lessons

1.I"m busy reviewing lessons 完全正确 2.When the finally class is over,all students swarm to leave school错误,可改为:After the final class is over,all students swarm to leave school. 3.Though I"m busy and tired,I"m happy too.可改为:Though I"m busy and tired,I"m still happy .

英文文献中的review,overview和survey的区别

review 文献回顾英[rɪˈvju:] 美[rɪˈvju] n. 回顾; 复习; (报刊的) 评论; [法] 复审; vt. 评论; 复习; 复查; 检验; vi. 复习功课; 写评论; [例句]The president ordered a review of US economic aid to Jordan总统下令对美国向约旦提供的经济援助进行审查。[其他] 第三人称单数:reviews 复数:reviews 现在分词:reviewing过去式:reviewed 过去分词:reviewed overview 英[ˈəʊvəvju:] 美[ˈoʊvərvju:] n. 概观; 总的看法; 回顾,复习; [例句]The central section of the book is a historical overview of drug use.该书的核心部分对毒品的使用作了历史概述。survey 英[ˈsɜ:veɪ] 美[ˈsɜ:rveɪ] vi. 测量土地; vt. 调查; 勘测; 俯瞰; n. 调查(表),调查所,测量,测量部,测量图; 概观,检查,鉴定书; 环顾; [例句]Business Development Advisers surveyed 211 companies for the report企业发展顾问公司为此报告调查了211家公司。[其他] 第三人称单数:surveys 复数:surveys 现在分词:surveying过去式:surveyed 过去分词:surveyed

review词性转换?

reviews,第三人称单数;reviewing,现在分词;reviewed,过去式与过去分词。

review什么意思 review it

review [ri"vju:] n. 回顾;复习;评论;检讨;检阅vt. 回顾;检查;复审vi. 回顾;复习功课;写评论Do you review it and think about it often?有没有时常的看和想它?希望能采纳,谢谢了

这句话For后面为什么不是reviewing?

review除了作动词,还是名词这里就是名词的用法。

review是综述的意思吗

有综述的意思 review 英 [rvju] 美 [rvju] n.评审,审查,检查,检讨(以进行必要的修改);(对书籍、戏剧、电影等的)评介,评论;报告;汇报;述评;回顾 v.复查;重新考虑;回顾;反思;写(关于书籍、戏剧、电影等的)评论;评介 第三人称单数: reviews 复数: reviews 现在分词: reviewing 过去式: reviewed 过去分词: reviewed 扩展资料 The government will review the situation later in the year. 政府将在今年晚些时候对形势重新加以研究。 The government will review the situation later in the year. 政府将在今年晚些时候重新检讨形势。 The review is in today"s paper. 这篇评论刊登在今天的报纸上。 Let"s start by reviewing what we did last week. 我们开始先来复习一下上星期学的内容。 Review your training needs with your line manager. 和你的直属经理探讨一下你需要哪些方面的培训。

After-reviewing,是什么意思

After reviewing 经审查后

review是什么意思

常见的意思是:会见

reviewzing是什么意思

reviewingv.检验( review的现在分词 ); 复查; 写…的评论文章; 复习功课,温习功课网络回顾; 复习双语例句 You should get to reviewing your lessons soon.你应该马上开始复习功课。

review的四种形式

review原形n. 回顾;复习;评论;检讨;检阅vt. 回顾;检查;复审vi. 回顾;复习功课;写评论reviewing reviewed reviewer 评论家。

reviewing the past 怎么翻译,如果用介词用什么介词

复习过去 review是动词不加介词

review和check up 有什么区别

reviewvt.1. 再检查,重新探讨;复审Superior courts may review decisions of lower courts.高级法院可以复审下级法院的判决。2. 批评,评论He promised to review the film in one of the evening papers.他答应在一家晚报上评论这部电影。3. 回顾,回忆Before falling asleep, she reviewed the day"s happenings.入睡以前,她回顾了一天所发生的事情。4. 检阅The President reviewed the fleet.总统检阅了舰队。5. 复习,温习In preparing for the exam, John reviewed his notes.约翰复习笔记准备考试。vi.1. 写评论,写书评2. 复习功课,温习功课The students are busy reviewing for a test.学生忙着复习迎考。n.1. 再检查;复审[C][U]These arrangements are subject to periodic review.这些安排须定期检查。2. 批评,评论[U][C]His new book got mixed reviews.对他的新书的评论毁誉参半。3. 评论杂志(文章)[C]He writes reviews for The New Yorker.他为《纽约人》撰写评论文章。4. 阅兵[C]A review of the troops will be held during the general"s visit.将军访问期间要举行阅兵式。5. 复习,温习[U][C]Before the examinations we have a review of the term"s work.考试之前,我们复习一学期的功课。6. 时事讽刺剧;轻松歌剧[C][U]check up1. 核对Please check up the data.请核对一下这些数据。2. 调查We will check up as soon as possible and let him know the result.我们将尽快进行调查,并把结果通知他。

revise和review有什么区别

revise 要修改订正review 就是审阅

review是是什么意思

review 英[rɪˈvju:] 美[rɪˈvju] n. 回顾; 复习; (报刊的) 评论; [法] 复审; vt. 评论; 复习; 复查; 检验; vi. 复习功课; 写评论; [例句]The president ordered a review of US economic aid to Jordan总统下令对美国向约旦提供的经济援助进行审查。[其他] 第三人称单数:reviews 复数:reviews 现在分词:reviewing过去式:reviewed 过去分词:reviewed

review progress是什么意思

英语:review progress汉语:审查进展 审核过程中审查,审核、调查,或者说是对某项事情、情况的核实、核查。也指软件工程中的一个步骤。例如2004年6月民政部公布的《民政部门实施行政许可办法》规定,民政部门办理行政许可事项时,“民政部门一般采取书面审查的办法对申请人提交的申请材料进行审查。依法需要对申请材料的实质内容进行核实的,民政部门应当派两名以上工作人员进行核查,并制作现场检查笔录或者询问笔录。现场检查笔录应当如实记载核查情况,并由核查人员签字。核查中需要询问当事人或者有关人员时,核查人员应当出示执法证件,表明身份,询问笔录应当经被询问人核对无误后签名或者盖章。”“对行政许可申请进行审查时,发现该行政许可事项直接关系他人重大利益的,应当在决定前告知利害关系人。”“依法应当先经下级民政部门审查后报上级民政部门决定的行政许可,下级民政部门应当依法接受申请人的申请,并进行初步审查。申请人提交材料齐全,符合法定形式的,应在法定期限内审查完毕并将初步审查意见和全部申请材料直接报送上级民政部门。上级民政部门不得要求申请人重复提供申请材料。”

revise和review的区别

1、两者的含义不同revise:vt.    修订; 修正; 改变; [主英国英语] 复习;    vt.    复习;    vi.    修订,校订;    reviewn.    回顾; 复习; (报刊的) 评论; [法] 复审;    vt.    评论; 复习; 复查; 检验;    vi.    复习功课; 写评论;    2、两者的读音不同revise    英[rɪˈvaɪz]    美[rɪˈvaɪz]    ;review    英[rɪˈvju:]    美[rɪˈvju]    3、两者的用法不同第三人称单数:revises 现在分词:revising 过去式:revised过去分词:revised第三人称单数:reviews 复数:reviews 现在分词:reviewing过去式:reviewed 过去分词:reviewed扩展资料:一、revise例句和用法1、He soon came to revise his opinion of the profession. 他很快就改变了对这个职业的看法。2、I have to revise for maths 我得复习数学。3、In view of the present situation, we"ll have to revise our original plan.基于目前这种情况,我们不得不修改原来的计划。二、review例句和用法1、The president ordered a review of US economic aid to Jordan 总统下令对美国向约旦提供的经济援助进行审查。2、When he reviewed the troops they cheered him as he smiled and raised his hat. 他检阅军队时微笑着举起帽子,人们与此同时都向他欢呼。3、Review all the notes you need to cover for each course. 把每一门课程需要掌握的笔记都复习一下。

英语中check和review的区别

复查和检查的区别check 英[tʃek] 美[tʃɛk] vt. 检查,核对; 制止,抑制; 在…上打勾; vi. 核实,查核; 中止; 打勾; [象棋] 将一军; n. <美>支票; 制止,抑制; 检验,核对; [例句]He was ever careful to check his scripts.他一向都认真检查剧本。[其他] 第三人称单数:checks 复数:checks 现在分词:checking过去式:checked 过去分词:checked review 英[rɪˈvju:] 美[rɪˈvju] n. 回顾; 复习; (报刊的) 评论; [法] 复审; vt. 评论; 复习; 复查; 检验; vi. 复习功课; 写评论; [例句]We have what we call a retrospective review process.我们建立了所谓的回顾式评价流程。[其他] 第三人称单数:reviews 复数:reviews 现在分词:reviewing过去式:reviewed 过去分词:reviewed 形近词: preview airview

review如何读

1、review英[r??vju?]美[r??vju?]。2、n.评审,审查,检查,检讨(以进行必要的修改); (对书籍、戏剧、电影等的)评介,评论; 报告; 汇报; 述评; 回顾;3、vt.复查; 重新考虑; 回顾; 反思; 写(关于书籍、戏剧、电影等的)评论; 评介;4、[例句]Obviously, design review is also an excellent educational tool.显然,设计评审也是很好的教育工具。5、[其他]第三人称单数:reviews 复数:reviews 现在分词:reviewing 过去式:reviewed 过去分词:reviewed。

请问~英文综述里面的insight review是怎么意思呀

insight review意思是:洞察力审查An insight review意思是:有识之士insight英 [ˈɪnsaɪt] 美 [ˈɪnˌsaɪt] n. 洞察力,洞悉; 直觉,眼光; 领悟; 顿悟复数: insightsreview英 [rɪˈvju:] 美 [ rɪˈvju] n. 复习; 回顾; (报刊的)评论; [法]复审vt. 检验; 复查; 复习; 评论vi. 复习功课; 写评论;复数: reviews 过去式: reviewed 过去分词: reviewed 现在分词: reviewing 第三人称单数:reviews

投稿后状态显示reviewing是什么意思

疾风知劲草,板荡识诚臣。

review做不及物动词时的例句?

review是什么意思    英语单词review有以下两种词性:    1、review用作名词的基本意思是“回顾,检查,检讨,重新考虑”, 指对已经发生过的事情进行总结。也可指“评论”或“检阅”,延伸可表示指带有评论性的“刊物”。复数:reviews    2、review用作动词的基本意思是“回顾”,指思考已经发生的事件或成就;还可指“复习”“写…的文章”“检阅”等。第三人称单数:reviews;现在分词:reviewing;过去式:reviewed;过去分词:reviewed    review的读音    英音发音音标:[rɪˈvjuː]    美音发音音标:[rɪˈvjuː]    review的用法总结    1、review一般用作及物动词,可接名词、代词或由疑问词引导的从句作宾语。    2、review有时也可用作不及物动词,常与介词for连用。    3、短语be/come under review意为“受到评论,在审查中”,本身含有被动意义。    review例句分享    Sometimes he reviewed for the principal papers.(用作动词)    他有时为各大报写些评论文章。    They review their lessons night after night. (用作动词)    他们每夜都温习功课。    Perhaps we need a quick review of what we"ve gone through so far. (用作名词)    或许我们应很快地回review的词汇用法顾一下我们前一段时间的工作。

reviewing a documentary credit

根据我平时的经验,issue document isuue something 发放,给予的意思,颁发,比较正式的说法,比如说交通局给我issue了一个驾照. 还有一种意思就是说,比如说what"s the issue?issue 在这里是说 "事件 " 的意思.什么事,或者是麻烦. issuer 是指 公司啊,或者机构,他们发放证书,或者给予权利,或者给予通行的意思. 我中文不是很好,

process reviewing是什么意思

process reviewing过程审核双语对照例句:1.Golden bear has now fully committed to implementing all recommendations of thatreview and is in process of reviewing all factories in its supply chain. 金熊现在已经全面遵守并执行该次审查中的所有建议,并正在审查其供应链中的所有工厂。2.A process for reviewing changes can help ensure that the changes you make willprovide business value and that everyone understands their impact. 一个变更复审流程有助于确保做出的变更能够产生业务价值,并让每个人明白变更的效果。

关于“to reviewing”

reviewing n. 回顾;评估;修订v. 回顾;复习;检验此处reviewing可单独做动词,而非review的ing形式

Reviewing the information regularly will help you stay on top of your work. reviewing是动名词?

动名词短语做主语,有规律的浏览信息将会帮助你处于工作的最高点。

为什么review用ing形式

我觉得应该用review

paper reviewing是什么意思

为您解答: paper reviewing审稿 例句:  This paper, reviewing the history of mt and comparing the respective features of mt and cat, gives a detailed account of the working principles, characteristics and the application of cat. 本文回顾了机器翻译的历史,比较了机器翻译和机器辅助翻译各自的特点,著重论述了翻译记忆软件的工作原理、特点及其应用。 **************************************************************如果你对这个答案有什么疑问,请追问,另外如果你觉得我的回答对你有所帮助,请千万别忘记采纳哟!***************************************************************

reviewing是什么意思

reviewing: 评估 回顾 修订 复习 检验给你一些例句,帮助你更好地理解。The committee is reviewing its decision.委员会正在审议它的决定。You don"t know. We are reviewing with the big bosses. They don"t like changing times.你有所不知,我们这是和大头目们评审,他们不喜欢改时间。

review的现在分词是什么

一般式:reviewing; 一般被动式:being reviewed; 完成式:having reviewed; 完成被动式:having been reviewed。

in reviewing the past的语法分析主要是 reviewing的用法

in reviewing the past在回顾过去。reviewingv.检验( review的现在分词 ); 复查; 写…的评论文章; 复习功课,温习功课By reviewing the world-wide academic researches on integrated qualitymanagement system, this paper analyzes the existing problems. 回顾了国内外对集成质量管理系统的研究成果,分析了目前仍然存在的问题。

reviewing是什么意思

reviewing回顾双语对照词典结果:reviewingv.检验( review的现在分词 ); 复查; 写…的评论文章; 复习功课,温习功课; 以上结果来自金山词霸例句:1.There are also websites that specialize in reviewing new apps. 还有些网站是专门评论最新的apps。

找和key,advice,review相关的单词各三个

keyboardsolutionopeneradviseadmonitionrecommendationsurveyinspectexamine

请问车上view是指什么

1、“VIEW”在汉语中翻译过来是查看的意思,在汽车上的意思就是用于切换仪表盘显示的信息界面。2、现在大多数车辆用的都是多功能方向盘,通过它我们能操作很多设备,提高了我们的驾驶乐趣,同时也方便车主在驾驶时的各项操作,大大提高了行车的安全性。3、除了这个键,我们还应该了解一些其它键的意思:“AUTOHOLD”是自动驻车功能按钮;“A/C”按钮是压缩机开关,全称AirCondition,也就是空调制冷开关;“SEL”键是菜单选择确认按钮,一般在多功能方向盘上;“OK”键和“SEL”键的功能是完全一样的,只是不同品牌的车子写的不同而已;“VOL+/-”是调节音量加减的按钮;“MUTE”是静音按钮,可以一键静音;“MODE”是切换模式按钮;“SET”在多功能方向盘上是定速巡航功能按钮;“INFO”的意思是信息显示功能键等等。4、我们只有了解了这些词的意思,才能更好的去操作它们。5、当前大多数汽车都会有这个键,这源于技术的不断进步,而几年前这个还只是中配车型才有的功能,还是期望更多的黑科技用于车上而且不加价。更多关于车上view什么意思,进入:https://www.abcgonglue.com/ask/e907b21616093840.html?zd查看更多内容
 首页 上一页  20 21 22 23 24 25 26 27 28 29 30  下一页  尾页