barriers / 阅读 / 详情

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

2023-05-19 18:00:40
TAG: view ab be
共1条回复
康康map

我相信大多数阅读这篇文章的人都知道这些方法,但一些人,即便是使用过这些方法,也没有以正确的姿式来使用它们。

首先是重用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的能力来让你的应用更加平滑。

相关推荐

CASSOWARY怎么样

鹤驼cassowary是南方的一个小厂品牌,也是做户外休闲的。运动和休闲差距很大,我觉得有些厂家基本就是在这两者之间跳跃。最不靠谱的那个满大街都是的骆驼也做专业户外,谁让现在驴友多,大牌贵的太多呢。这牌子第一次见,觉得现在新世界的商务部把关成问题。你想北京大商场里面这牌子我在别家没见过,而且衣服的做工和用料感觉很山寨,乡土气息浓厚。还号称英伦风格,说白了北京远郊区县都算不上。有的卖就有的买,这便宜反正我不占,不够糟心的。
2023-01-07 13:45:451

cassowary是什么动物

鹤驼,食火鸡鹤鸵(学名:Casuarius)是世界上第三大的鸟类,为鹤鸵目鹤鸵科唯一的代表。它的双翼比鸵鸟和美洲鸵鸟的更加退化,不能飞。鹤鸵目和美洲鸵鸟一样,也都有三个脚趾。鹤鸵目分布于澳大利亚和新几内亚等地,有两科四种。因爪子如匕首能挖人内脏,被列为世界上最危险的鸟类。
2023-01-07 13:45:511

中国有鹤陀这种动物吗?

你说的是这个吧?鹤鸵鹤鸵的中文别名是食火鸡,英文为Cassowary,二名法是Casuarius casuarius。归鹤鸵科、鹤鸵属等。产与澳大利亚-巴布亚地区的一种大型不能飞的鸟类,为鹤鸵目鹤鸵科唯一的代表。它是世界上第三大的鸟类,仅次于鸵鸟和鸸鹋,翼非常退化,比鸵鸟和美洲鸵鸟的翅膀更加退化。鹤鸵目和美洲鸵鸟一样,也有三个脚趾。鹤鸵目分布于澳大利亚和新几内亚等地,有两科四种。不是中国原产,但应该在动物园有养殖
2023-01-07 13:46:251

鸵鸟的资料

  鸵鸟鸵鸟:非洲一种体形巨大、不会飞但奔跑得很快的鸟(鸵鸟) ,特征为脖子长而无毛、头小、脚有二趾。是世界上存活着的最大的鸟。现代鸟类中最大的鸟,高可达3米,颈长,头小,脖子长裸,嘴扁平,翼短小,不能飞,腿长,脚有力,善于行走和奔跑。雌鸟灰褐色,雄鸟的翼和尾部有白色羽毛。  中文学名: 鸵鸟  二名法: Struthio camelus  界: 动物界  门: 脊索动物门  纲: 鸟纲  目: 鸵鸟目  科: 鸵鸟科  属: 鸵鸟属  种: 鸵鸟  分布区域: 从塞内加尔到埃塞俄比亚的非洲东部沙漠地带和荒漠草原  英文名: Ostrich  鸵鸟 鸟纲 鸵鸟目鸵鸟科 鸵鸟  学名:Struthio camelus 英文名:Ostrich (非洲鸵鸟)Emu(澳洲鸵鸟) 中文名:鸵鸟(tuó niǎo) 日文:だちょう。 繁体:鸵鸟 A rhea.(美洲鸵) 语源 Middle English 鸵鸟  中古英语 from Old French ostrusce, ostrice 源自 古法语 ostrusce, ostrice Medieval Latin ostrica 中世纪拉丁语 ostrica both from Vulgar Latin *avis str¿½} 都源自 俗拉丁语 *avis str¿½} Latin avis [bird] * see awi- 拉丁语 avis [鸟] *参见 awi- Late Latin str¿½} [ostrich] * see struthious 后期拉丁语 str¿½} [鸵鸟] *参见 struthious 鸵鸟是现存体形最大不能飞行的鸟类。分布于非洲和阿拉伯半岛的部分地区。产于非洲和美洲。 属鸵鸟目Struth-ioniformes鸵鸟科Struthionidae。  外形特征  黑毛的是雄鸵鸟  头(Head)小,宽而扁平,颈(Neck)长而灵活,裸露的头部、颈部以及腿部(Thighs)通常呈淡粉红色;喙(Beak)直而短,尖端为扁圆状;眼(Eyes)大,继承鸟类特征,其视力亦佳,具有很粗的黑色睫毛(Eyelashes)。 后肢甚粗大,只有两趾(Toes)(第Ⅲ、Ⅳ趾),与一般鸟类有三~四趾不同,是鸟类中趾数最少者,内趾(第Ⅲ趾)较大,具有坚硬的爪(Claw),外趾则无爪。后肢强而有力,除用于疾跑外,还可向前踢用以攻击。 翼(Wings)相当大,但不能飞翔,主要是因为胸骨(Sternum b.)扁平,不具龙骨(Keel b.)突起,锁骨(Clavicle b.)退化,且羽毛均匀分布,无羽区及裸区之分,羽毛蓬松而不发达,缺少分化,羽枝上无小钩(Barbs),因而不形成羽片,显然,这样的羽毛主要功用是保温。 成熟的雄鸟(Adult cock)体高1.75~2.75公尺,体重60~160公斤。 雄性成鸟全身大多为黑色,翼端及尾羽末端之羽毛为白色,且呈美鸵鸟的图鉴(10张)丽的波浪状;白色的翅膀及尾羽衬托着黑色的羽毛,让雄鸟在白天时格外显眼,它的翅膀及羽色主要是用来求偶。 雌性(Hens)毛色大致与雄鸟相似,只是毛色棕灰不像雄鸟那麼艳丽。幼鸟(Chicks)羽色棕灰斑驳,须经数次换羽,至两岁时才能达到成鸟的羽色。此毛色主要是为了便于伪装。两性幼雏长得非常相像,甚至年轻的鸵鸟也相差很少,到目前为止仍无法从外貌分辨雌雄,只能从性器官去区别。 鸵鸟的性器官在成熟前都很小;雄性鸵鸟具交配器,在交配季节,成熟雄鸟的睾丸(Testis)有人的拳头般大小,但在非繁殖期又会萎缩,直到下一个繁殖季才又会膨大。 鸵鸟之骨盆为封闭形,左右耻骨(Pubis b.)在中线形成愈合。值得注意的是,鸵鸟的排尿和排粪是分开的,这与其他鸟类不同。 卵大,颜色似鸭蛋,蛋长15~20公分,重达1400克,是鸟蛋中最大者,卵壳甚坚硬,可承受住一个人的重量。  基本分类  鸵鸟(Ostrich)为鸵形目(Struthioniformes)的总称,属于今鸟亚纲(Neornithes)中的平胸总目(Ratitae,又称为古颌总目(Palaeognathae));平胸总目除了鸵形目之外,还有美洲鸵鸟目(或鶆 目(Rheiformes))、澳洲鸵鸟目(或食火鸡目(Casuariiformes))以及无翼鸟目(Apterygiformes),均属于无飞行能力的鸟类。 鸵鸟因受地理隔绝而形成六种可加以区别的品系:  一、S. c. camelu  S. c. camelus,北非鸵鸟(North Africa ostrich),是现存数量最多的种类,最鸵鸟蛋的图鉴(8张)早被发现于北非 撒哈拉沙漠南部,但目前在原产地已绝迹,其栖息地及数量仍在减少中。雄体头冠具有一裸露的头盖,为北非鸵鸟与马赛种(S. c. massaicus)最大的区分。  二、S. c. spatzi  S. c. spatzi,Stresemann,在西元1926年在Rio de Oro这本书中被描述,它的分类依据在于其蛋特小与蛋壳结构的不同,目前可能已灭绝。  三、S. c. syriacu  S. c. syriacus,阿拉伯鸵鸟(Arabian ostrich),Rothschild,分布于叙利亚与阿拉伯的沙漠中,是分布最北的驼鸟。此品种曾是为数最多的种类,但已经于西元1941年绝种。  四、S. c. molybdophane  S. c. molybdophanes,蓝颈鸵鸟、索马利鸵鸟(Somali ostrich),Reichenow,分布在位于坦纳河(the Tana River)的Somaliland及Gallaland。裸露的头部、颈部以及腿部呈泛蓝的灰色,颈部有银灰色的毛覆盖,在颈背基部的羽毛呈白色,背部则为黑色,具有微红色的光辉;喙暗红色,顶端为黄色;头顶为暗黄色坚硬的平板结构;小腿前侧为暗红色或橙红色,在接近脚趾处则为黄色。  五、S. c. massaicu  S. c. massaicus,马赛鸵鸟(Masai ostrich),Neumann,分布于肯尼亚(Kenya)与坦干伊喀(Tanganyika)东部。雄成体与非洲鸵鸟(S. c. camelus)相似,但雄体不具裸露的头盖;此种与索马利种异于其他品种的特征在于蛋呈深紫色,具有微小的孔。  六、S. c. australia  S. c. australia,南非鸵鸟(South Africa ostrich),Gurney,分布于南非的Cunene River和Zambesi River以南。裸露的头部、颈部以及腿部呈铅灰色,有细毛覆盖,雄体亦不具裸露的头盖;喙灰黑色,上颚基部及边缘呈暗红色,繁殖季节则颜色变明亮;小腿为暗灰色,繁殖季节转为暗红色。据说在安哥拉(Angola)及西南非的北部仍可发现。  分布范围  鸟类学家发现,根据各地鸟类的特色,可将全世界分成六大地理区,每一区有独特的鸟类,且同一区内的鸟类有普遍的相似性,这是演化和适应环境的结果,其中鸵鸟分布于伊索匹亚区和非洲区(Ethiopian or Afrofropical Realm)。 鸵鸟广泛地分布在非洲低降雨量的干燥地区。在新生代第三纪时,鸵鸟曾广泛分布于欧亚大陆,在我国著名的北京人产地——周口店不仅发现过鸵鸟蛋化石,还发现有腿骨化石。近代曾分布于非洲、叙利亚与阿拉伯半岛,但现今叙利亚与阿拉伯半岛上的鸵鸟均已绝迹;它们的分布是萨哈拉沙漠往南一直到整个非洲,而澳洲则于西元1862~1869年引进,在东南部形成新的栖息地。  生活习性  鸵鸟写真  鸵鸟是群居,日行性走禽类,适应于沙漠荒原中生活,嗅听觉灵敏,善奔跑,跑时以翅扇动相助,一步可跨8米,时速可达70千米/小时,能跳跃达3.5米。 为了采集那些在沙漠中稀少而分散的食物,鸵鸟是相当有效率的采食者,这都要归功于它们开阔的步阀、长而灵活的颈子以及准确的啄食。鸵鸟啄食时,先将食物聚集于食道上方,形成一个食球后,再缓慢地经过颈部食道将其吞下。由于鸵鸟啄食时必须将头部低下,很容易遭受掠食者的攻击,故觅食时不时得抬起头来四处张望。 鸵鸟常结成5~50只一群生活,常与食草动物相伴。鸵鸟用强有力的腿(仅有两趾,主要的趾发达几乎成为蹄)逃避敌人,受惊时速度每小时可达65公里。来不及逃跑,它就干脆将潜望镜似的脖子平贴在地面,身体蜷曲一团,以自己暗褐色的羽毛伪装成石头或灌木丛,加上薄雾的掩护,就很难被敌人发现啦。另外,鸵鸟将头和脖子贴近地面,还有两个作用,一是可听到远处的声音,有利于及早避开危险;二是可以放松颈部的肌肉,更好地消除疲劳。事实上,并没有人真正看到过鸵鸟将头埋进沙子里去的情景,如果那样,沙子会把鸵鸟闷死的。 雄鸵鸟在繁殖季节会划分势力范围,当有其他雄性靠近时会利用翅膀将之驱离并大叫,它们的叫声宏亮而低沉。  食物特性  鸵鸟的营养来源很广,主食草、叶、种子、嫩枝、多汁的植物、树根、带茎的花、及果实等等,也吃蜥、蛇、幼鸟、小哺乳动物和一些昆虫等小动物,属于杂食性。公园里人工饲养的鸵鸟,用合成饲料喂养。鸵鸟在吃食的时候,总是有意把一些沙粒也吃进去,因为鸵鸟消化能力差,吃一些沙粒可以帮助磨碎食物,促进消化,且不伤脾胃。  繁殖情况  鸵鸟繁殖期的时间随地区而有不同,在北非及东非则大多在旱季(七月至隔年一月)筑巢,雄鸟在其领土内摩擦出许多小浅坑,鸵鸟在繁殖期内为一雄多雌,但雄鸵鸟与其中一只(the "Major" hen)维持不严谨的单一配对关系(pair bond),此雌鸟会找其中一穴产卵,通常每二日产一枚,数日内共可产卵多达10~20枚;约有六或更多只雌鸟(the "Minor" hens)会在同一穴产卵,但不负责孵卵,一窝蛋少则30枚,多则如马赛种(Masai race)50~60枚。雄鸟夜间孵卵,白天则由雌鸟担任。孵化温则约为96.8~97.6。F。 像这样去照顾其他个体的卵,在演化上是较易受淘汰的,但在其他种类的鸟中,有部分确实如鸵鸟般愿意去照顾。卵大而易招天敌的觊觎似乎是使此特征存留下来的主要原因。鸵鸟蛋虽是所有鸟类中最大的,但与其身体比例来说亦是所有鸟类中最小的,故一只鸵鸟可以覆盖大量的蛋。孵出的鸵鸟雌雄比例约为1只雄性对1.4只雌性,且鸵鸟巢极易受天敌之破坏,此二者都意味着有许多雌鸟无巢可供产卵,显然如果有其他地方供它们产卵是有好处的。而对于Major hen来说,有额外的蛋在它的巢里亦是好事,因它自己的蛋可以免于受到破坏;通常,若巢中的卵多于Major hen所能覆盖的范围,它可以辨认出自己的卵,而将其他多馀的卵滚到巢四周任其毁坏。 沙漠上有许多的掠食者喜欢偷食鸵鸟蛋,故无成鸟看守的巢很容易受到天敌的光顾,例如埃及秃鹰(Egyptian vulture)会将石头丢向卵藉以打破厚达2mm之卵壳;即使是有成鸟看守的卵,亦有土狼(Hyena)、胡狼(Jackal)等天敌,故在为期三周的产卵期及约为六周的孵化期中只有不到10%的卵会孵化。 雏鸟为早成鸟(Precocial bird),由雄雌成鸟共同抚育,数巢雏鸟常形成一大群,由一至两只成鸟护卫,但只有其中的约15%可长至一岁大,此时它们已经长到成鸟高度了。雌鸟二年达性成熟,雄鸟较晚,约三~四年,寿命约30~40年。  演化关系  鸟类自从侏罗纪开始出现以来,到白垩纪已经作了广大的辐射适应,演化出各式各样的水鸟及陆鸟,以适应各种不同的环境。进入新生代以后,由于陆上的恐龙绝灭,哺乳类尚未发展成大型动物以前,其生态地位多由鸟类所取代,例如北美洲始新世的营穴鸟(Diatryma),为巨大而不能飞的食肉性鸟类,填补了食肉兽的真空状态;恐鸟(Phororhacos)是南美洲中新世的大型食肉鸟,不会飞行,也填补了当时南美洲缺乏食肉兽的空缺。 其实鸵鸟的祖先也是一种会飞的鸟类,那么它是怎么变成今天的模样的呢?这与它的生活环境有着非常密切的关系。鸵鸟是一种原始的残存鸟类,它代表着在开阔草原和荒漠环境中动物逐渐向高大和善跑方向发展的一种进化方向。与此同时,飞行能力逐渐减弱直至丧失。非洲鸵鸟的奔跑能力是十分惊人的。它的足趾因适于奔跑而趋向减少,是世界上唯一只有两个脚趾的鸟类,而且外脚趾较小,内脚趾特别发达。它跳跃可腾空2.5米,一步可跨越8米,冲刺速度在每小时70公里以上。同时粗壮的双腿还是非洲鸵鸟的主要防卫武器,甚至可以致狮,豹于死地。 此外,还有几种不会飞的鸟类常被归为「走禽类(Ratites)」,在各岛屿或特殊地区,填补了缺乏哺乳类的空位,有名的例子包括在新西兰的恐鸟(Dinornis)、澳洲的奔鸟(Dromornis)和马达加斯加岛的象鸟(Aepyornis),它们不幸都在人类出现后绝灭。不过还有一些较幸运的走禽,如非洲的鸵鸟、澳洲的鸸鹋 (Emu)和食火鸡(Cassowary)、新西兰的几维鸟(Kiwis),以及南美洲的鶆 (Rheas),迄今仍幸存。 这些走禽的最大共同特征是胸骨扁平,不具龙骨突起;然而,在此飞行能力逐渐消失的演化过程中,飞行用的强健胸肌以及其附著的部位变得不再需要。不过,这些走禽是否都有相近的血缘关系,仍有待足够的化石证据来探求。 附带一提的是,渡渡鸟也是不会飞的陆鸟,但它不是走禽的近亲,而是鸠鸽类的一员,因此它没有像走禽类那种善跑的特性。  历史记载  “安息国贡大雀。雁身驼蹄,苍色,举头高七八尺,张翅丈余,食大麦,其卵如瓮,其名驼鸟。”——郭义恭 广志 “吐火罗,永徵元年献大鸟,高七尺,黑色,足类骆驼,鼓翅而行,日三百里,能噉铁,俗谓驼鸟。”——唐书 吐火罗传  市场开发  鸵鸟业大起大落  其实论野生鸵鸟,沙特、埃及、苏丹,都比南非多得多,但要论养鸵鸟的历史和用鸵鸟生财的本事,就 鸵鸟 非南非人莫属了。南非人养鸵鸟始于1826年,最初鸵鸟的数量很少,后来由于西方王室贵族流行穿用鸵鸟羽毛制作的服装,鸵鸟一时间身价百倍,一只成年鸵鸟一年只能产1公斤羽毛,而一件最简单的鸵鸟披肩也需至少15公斤羽毛,南非农场主们纷纷饲养鸵鸟。到1913年,鸵鸟存栏数竟突破100万只。然而一战后,欧洲王室逐渐没落,鸵鸟毛需求大幅减少,鸵鸟业者纷纷转行,一些聪明的农场主留下了那些品种最优良的鸵鸟,等待新机会的到来。  在“鸵鸟之都”过把瘾  二战后,鸵鸟市场开始回暖。南非人吸取教训,开始多方面经营鸵鸟生意。他们制作了鸵鸟蛋壳工艺品,还把养鸵鸟的农场开放,吸引游客参观。许多鸵鸟农场主还联合起来成立了农业联合体,由它来统一负责鸵鸟产品的市场营销。 在被称为“鸵鸟之都”的奥茨霍恩市,游客不仅能品尝到鸵鸟肉、鸵鸟蛋,还能过一把骑鸵鸟的瘾,甚至可以参加“骑鸵鸟比赛”。  鸵鸟肉  鸵鸟肉营养丰富,具有极高的营养价值,品质优于牛肉。突出特点是:低脂肪、低胆固醇、低热量,可减少心血管疾病和癌症的发生。加之鸵鸟无疫情侵害,鸵鸟肉已成为国际公认的绿色健康食品。 譬如一般的牛、羊、鱼肉均含有较高的胆固醇和脂肪,为了避免肥胖症和产生心脑血管疾病,一些人不得不控制吃肉。 鸵鸟肉则相反。每百克鸵鸟肉的胆固醇含量是牛肉的6分之1,是鸡肉的18分之1。脂肪含量是牛肉的3分之1,是鸡肉的6分之1。钙含量是牛肉的3倍,是鸡肉的7倍。铁含量是牛肉的5倍,是鸡肉的7倍。锌含量是牛肉的3倍,是鸡肉的6倍。 如今鸵鸟肉不仅汉族人可以食用,现在信奉伊斯兰教的人们也可以食用了。北京市天安门东42公里的大厂回族自治县环宇清真肉类有限公司就已经经营起了精分割的清真鸵鸟肉。  鸵鸟皮  比牛皮韧度多5倍-鸵鸟皮1、皮质柔软,韧度却强过牛皮五倍之多,有耐揉不裂纹之优点。2、鸵鸟皮具有凸出的小图粒,那一颗颗的图粒以不规则排列构成美丽悦目的唯一图案,没有两幅是完全相同的。而每一张鸵鸟皮的优劣分别,是由皮面的毛细孔颗分布面积是否达到水平,以及毛细孔颗粒分布是否均匀、皮面是否曾受伤有瑕疪来区分。3、鸵鸟皮革制品轻软、透气、柔韧、美观、耐用、且富手感,可适用于靴鞋、皮带、大衣、手袋、公事包、装饰品及名贵家具的制造材料,且因透气,常穿鸵鸟皮做成的皮鞋不易得香港脚!4、鸵鸟皮因富含胶原蛋白,所以也可食用,不过因为皮单价高,很少人知道这等美味。5、因富含高品质胶原蛋白,可取代猪皮做为胶原蛋白化妆品的原料。  鸵鸟蛋  1、鸵鸟蛋一般长达15公分,宽8公分,重量可达1。5公斤,相当于30枚鸡蛋,是目前世界上最大的蛋。一粒鸵鸟蛋,可供24人享用。蛋壳厚而坚硬,完整的鸵鸟蛋可以承受90KG 的重量而不破。  2、鸵鸟蛋中的营养极高,每百克含22.54克tnt,80毫克的金质,4.03毫克银质。煮熟后,蛋白晶莹剔透,口感滑嫩有弹性,鸵鸟蛋做成的冰激淋也非常可口。 3、蛋壳是不可多得的工艺品之天然材质,可雕刻或绘画成各种精巧、高贵的装饰摆设工艺品。 4、鸵鸟蛋壳含有丰富的天然碳酸钙,易于人体吸收。  鸵鸟羽毛  1、雏鸟到12月龄间,所生长出的雏羽可加工成保暖用品,如羽毛衣、睡袋等。 2、鸵鸟成鸟的羽毛,特别是翅膀末端的白羽,质地高雅绚烂,可制成华丽的羽饰品。在欧洲上流社会,早就将鸵鸟羽毛做为头饰,或将它们缝在衣裙上,用来作装饰用品,而美国拉斯维加斯的歌舞剧女郎的羽毛装饰也都是使用鸵鸟羽毛。 3、鸵鸟羽毛是不带静电的羽毛,其抗静电的特性已应用在电脑、电子产品的工厂里。  鸵鸟精神  比喻逃避 ,不敢面对现实,不肯正视困难和危险的人。这个意思来缘于每当鸵鸟遇到劲敌追赶无法脱身的时候不是战斗,而鸵鸟艺术形象(5张)是把头深深的埋进土里,不敢面对危险,所以人们就把那些遇到危险只想逃避的人的行为叫做鸵鸟行为。这就是所谓的“鸵鸟心理”,但是事实上这是没有科学依据的。鸵鸟在遇到危险时会将头埋在沙子中的说法,其实是人类的一种误解。鸵鸟生活在炎热的沙漠地带,那里阳光照射强烈,从地面上升的热空气,同低空的冷空气相交,由于散射而出现闪闪发光的薄雾。平时鸵鸟总是伸长脖子透过薄雾去查看,而一旦受惊或发现敌情,它就干脆将潜望镜似的脖子平贴在地面,身体蜷曲一团,以自己暗褐色的羽毛伪装成石头或灌木丛,加上薄雾的掩护,就很难被敌人发现。另外,鸵鸟将头和脖子贴近地面,还有两个作用,一是可听到远处的声音,有利于及早避开危险;二是可以放松颈部的肌肉,更好地消除疲劳。事实上,并没有人真正看到过鸵鸟将头埋进沙子里去的情景,如果那样,沙子会把鸵鸟闷死的。  菜肴  三色鸵鸟蛋饼  制作: 1. 分别在菠菜碎、土豆碎和金枪鱼中加入鸵鸟蛋液和适量盐,调成汁。 2. 炒锅中放入适量色拉油,用洋葱丁炝锅后,三种蛋汁分别淋入锅中,摊成蛋饼,将三张蛋饼摞在一起。 3. 吃时切成三角状即可。  竹筒鸵鸟  原料及制作 鸵鸟肉100克。碘盐5克,鲜味汁6克。 1、鸵鸟肉切成2.5厘米见方的丁后出水去异味。 2、枸杞子泡好,鲜竹叶洗净消毒后入竹筒底部后,下入主辅料及调料。 3、清汤调好味后,倒入竹筒中蒸45分钟。
2023-01-07 13:46:316

ひくいどり是什么意思

ヒクイドリ平假名:ひくいどり罗马音:hi ku i do ri释义:为英语 Cassowary的音译,即 “食火鸡”。产於澳大利亚-巴布亚地区的一种大型不能飞的鸟类,为鹤鸵目鹤鸵科唯一的代表。(鸟纲ダチョウ目ヒクイドリ科に属する鸟の総称。)
2023-01-07 13:47:041

如何使用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来实现。
2023-01-07 13:47:221

如何对使用了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的意义。 至此程序达到了预期的效果。
2023-01-07 13:47:271

鸸鹋英文介绍

Emu is a large, flightless Australian bird(Dromiceius novaehollandiae) related to and resembling the ostrich and the cassowary. 鸸鹋一种大型、不会飞的澳大利亚鸟(鸸鹋鸸鹋科),同鸵鸟与食火鸡类似且有血缘关系Emus grow to almost two metres and can run at nearly 5 kph.鸸鹋身高可达两米,跑速可达每小时近5公里。 It is respected throughout the world for it" s legendary protective instincts. However, it is known to flap aimlessly when attacked by any member of the Keano Massivus species.地球人都知道鸸鹋传奇般的自卫本能,但是,大家也知道他在受到基恩这种大块头的袭击时却只能漫无目的的乱拍翅膀。
2023-01-07 13:47:331

鸸鹋念什么?

鸸鹋 开放分类: 澳大利亚、活化石、动物、鸵鸟、鹤鸵目 鸸鹋 érmiáo(又名澳洲鸵鸟)。鸸鹋能堂而皇之地走上国徽,得益于它是澳大利亚最大的鸟,是澳大利亚的象征性动物之一, 鸸鹋是世界最大的陆地鸟之一,也是世界上最古老的鸟种之一,是鸟纲鹤鸵目鸸鹋科唯一残存种。鸸鹋(鸸鶓)鸟名。形似鸵鸟而较小,体高约1.5米。嘴短而扁,羽毛灰色或褐色。翅膀退化,足三趾,腿长善走。产于 澳洲 森林中,吃树叶和野果。是仅次于鸵鸟的最大鸟,栖息于开阔森林与平原,羽毛发育不全,具纤细垂羽,副羽甚发达,头、颈有羽毛、无肉垂。   鹤鸵目(Casuariiformes)鸸鶓科(Dromaiidae或Dromiceiidae)唯一生存的鸟类。鹤鸵目还包括鹤鸵(cassowary)。鸸鶓产於澳大利亚,不能飞翔。是现存的另一种最大鸟类,身高超过1.5公尺(5呎),体重超过45公斤(100磅)。鸸鶓(Dromaius novaehollandiae或Dromiceius novaehollandiae)是由殖民者所造成的几个绝灭类型中唯一的幸存者,体健壮,腿长,同其亲属鹤鸵一样。两性体羽均为褐色,头和颈暗灰。鸸鶓的跑速每小时可达50公里(30哩)。被困时用三趾的大脚踢人,鸸鶓终生配对。每窝产7�6�510枚暗绿色卵,卵长13公分(5吋)。在地面上筑巢。雄鸟孵卵约60天。体上有条纹的幼雏出壳後很快就能跟著成鸟跑。鸸鶓成小群取食果实和昆虫,也可能毁坏庄稼。特别的气管结构在繁殖期可发出巨大的隆隆声。有3个亚种栖息於澳大利亚北部、东南部和西南部,第四个亚种(现已绝灭)曾栖息於塔斯马尼亚岛。 鸸鹋广泛分布于澳大利亚大陆,但是在开阔地区比较常见而在山地和茂密的森林等地比较罕见。鸸鹋易于饲养,被广泛引入其他国家,在我国很多动物园中都能见到。它外表很像非洲沙漠中的鸵鸟,但没有鸵鸟高大,其身高约1.5米-2米,成年雌性鸸鹋比雄性的大。体重数十公斤不等,从动物分类学来说,它应属于鸵鸟类中的一种。鸸鹋喜爱生活在草原、森林和沙漠地带,全身披着褐色的羽毛,擅长奔跑,时速可达70公里,并可连续飞跑上百公里之遥。鸸鹋虽有双翅,但同鸵鸟一样已完全退化,无法飞翔。以野草、种子、果实等植物及昆虫、蜥蜴等小动物为食它能泅水,可以从容渡过宽阔湍急的河流。鸸鹋耐饥渴,长相一直保持史前时代的形状,没有丝毫变化,这令一些动物学家深感困惑。鸸鹋或出双入对,或三五成群,极少见有踽踽独行的。鸸鹋的成熟期长达3年,一只成年雌鸟只在每年的11月至翌年的4月产蛋,每次7-15枚,而孵卵的责任由雄鸟来承担。在整个孵化期间,雄性在长达两个半月的时间里几乎不吃不喝,表现出极强的“父爱”,它们完全靠消耗自身体内的脂肪来维持生命,直到小鸸鹋脱壳而出,新生命的啼鸣回响在湛蓝的天空……每次孵化后,雄性体重会降低许多,雏鸟出壳后,仍由父亲照料近2个月。鸸鹋很友善,若不激怒它,它从不啄人。它对食物也不讲究,主要以草类为食,也爱吃一些草蝶及昆虫。在野生动物保护区里,鸸鹋能经常改善伙食,吃到游人喂它的面包、香肠及饼干等。当有汽车在公路边停下来时,鸸鹋毫无戒备,反而会大摇大摆地踱步而来,争抢着把头伸进车窗,一是对你表示亲近,二是希望你能给点好东西吃。 科学研究表明,数十万年的地质和气候变迁,仍无法改变它们最初形成的原始型态,这种神奇的适应能力在自然界的进化史中是极为罕见的。
2023-01-07 13:47:424

鸵鸟是鸟吗?

当然是鸟典型的鸟类特征都有
2023-01-07 13:47:5615

有谁晓得关于鸵鸟的资料,越完整越好,谢谢

  鸵鸟的图鉴(10张) 鸵鸟  鸵鸟   鸟纲鸵鸟目鸵鸟科    学名:Struthio camelus   英文名:Ostrich (非洲鸵鸟)Emu(澳洲鸵鸟)   中文名:鸵鸟(tuó niǎo)   日文:だちょう。   繁体:鸵鸟   A rhea.(美洲鸵)   语源 Middle English 中古英语   from Old French ostrusce,ostrice 源自古法语   ostrusce,ostrice Medieval Latin ostrica 中世纪拉 鸵鸟  丁语   ostrica both from Vulgar Latin *avis str¿½}   都源自 俗拉丁语   *avis str¿½}   Latin avis [bird] * see awi-   拉丁语 avis [鸟] *参见 awi-   Late Latin str¿½} [ostrich] * see struthious   后期拉丁语 str¿½} [鸵鸟] *参见 struthious   鸵鸟是现存体形最大不能飞行的鸟类。分布于非洲和阿拉伯半岛的部分地区。产于非洲和美洲。   属鸵鸟目Struth-ioniformes鸵鸟科Struthionidae。  编辑本段外形特征  黑毛的是雄鸵鸟  头(Head)小,宽而扁平,颈(Neck)长而灵活,裸露的头部、颈部以及腿部(Thighs)通常呈淡粉红色;喙(Beak)直而短,尖端为扁圆状;眼(Eyes)大,继承鸟类特征,其视力亦佳,具有很粗的黑色睫毛(Eyelashes)。   后肢甚粗大,只有两趾(Toes)(第Ⅲ、Ⅳ趾),与一般鸟类有三~四趾不同,是鸟类中趾数最少者,内趾(第Ⅲ趾)较大,具有坚硬的爪(Claw),外趾则无爪。后肢强而有力,除用于疾跑外,还可向前踢用以攻击。   翼(Wings)相当大,但不能飞翔,主要是因为胸骨(Sternum b.)扁平,不具龙骨(Keel b.)突起,锁骨(Clavicle b.)退化,且羽毛均匀分布,无羽区及裸区之分,羽毛蓬松而不发达,缺少分化,羽枝上无小钩(Barbs),因而不形成羽片,显然,这样的羽毛主要功用是保温。  鸵鸟图欣赏(20张)  成熟的雄鸟(Adult cock)体高1.75~2.75公尺,体重60~160公斤。   雄性成鸟全身大多为黑色,翼端及尾羽末端之羽毛为白色,且呈美丽的波浪状;白色的翅膀及尾羽衬托着黑色的羽毛,让雄鸟在白天时格外显眼,它的翅膀及羽色主要是用来求偶。   雌性(Hens)毛色大致与雄鸟相似,只是毛色棕灰不像雄鸟那麼艳丽。幼鸟(Chicks)羽色棕灰斑驳,须经数次换羽,至两岁时才能达到成鸟的羽色。此毛色主要是为了便于伪装。两性幼雏长得非常相像,甚至年轻的鸵鸟也相差很少,到目前为止仍无法从外貌分辨雌雄,只能从性器官去区别。   鸵鸟的性器官在成熟前都很小;雄性鸵鸟具交配器,在交配季节,成熟雄鸟的睾丸(Testis)有人的拳头般大小,但在非繁殖期又会萎缩,直到下一个繁殖季才又会膨大。   鸵鸟之骨盆为封闭形,左右耻骨(Pubis b.)在中线形成瘉合。值得注意的是,鸵鸟的排尿和排粪是分开的,这与其他鸟类不同。   卵大,颜色似鸭蛋,蛋长15~20公分,重达1400克,是鸟蛋中最大者,卵壳甚坚硬,可承受住一个人的重量。  编辑本段基本分类  鸵鸟(Ostrich)为鸵形目(Struthioniformes)的总称,属于今鸟亚纲(Neornithes)中的平胸总目(Ratitae,又称为古颌总目(Palaeognathae));平胸总目除了鸵形目之外,还有美洲鸵鸟目(或鶆 目(Rheiformes))、澳洲鸵鸟目(或食火鸡目(Casuariiformes))以及无翼鸟目(Apterygiformes),均属于无飞行能力的鸟类。   鸵鸟因受地理隔绝而形成六种可加以区别的品系:  一、S. c. camelu  S. c. camelus,北非鸵鸟(North Africa ostrich),是现存数量最多的种类,最早被发现于北非 撒哈拉沙漠南部,但目前在原产地已绝迹,其栖息地及数量仍在减少中。雄体头冠具有一裸露的头盖,为北非鸵鸟与马赛种(S. c. massaicus)最大的区分。  二、S. c. spatzi  S. c. spatzi,Stresemann,在西元1926年在Rio de Oro这本书中被描述,它的分类依据在于其蛋特小与蛋壳结构的不同,目前可能已灭绝。  三、S. c. syriacu  S. c. syriacus,阿拉伯鸵鸟(Arabian ostrich),Rothschild,分布于叙利亚与阿拉伯的沙漠中,是分布最北的驼鸟。此品种曾是为数最多的种类,但已经于西元1941年绝种。  四、S. c. molybdophane  S. c. molybdophanes,蓝颈鸵鸟、索马利鸵鸟(Somali ostrich),Reichenow,分布在位于坦纳河(the Tana River)的Somaliland及Gallaland。裸露的头部、颈部以及腿部呈泛蓝的灰色,颈部有银灰色的毛覆盖,在颈背基部的羽毛呈白色,背部则为黑色,具有微红色的光辉;喙暗红色,顶端为黄色;头顶为暗黄色坚硬的平板结构;小腿前侧为暗红色或橙红色,在接近脚趾处则为黄色。  五、S. c. massaicu  S. c. massaicus,马赛鸵鸟(Masai ostrich),Neumann,分布于肯尼亚(Kenya)与坦干伊喀(Tanganyika)东部。雄成体与非洲鸵鸟(S. c. camelus)相似,但雄体不具裸露的头盖;此种与索马利种异于其他品种的特征在于蛋呈深紫色,具有微小的孔。  六、S. c. australia  S. c. australia,南非鸵鸟(South Africa ostrich),Gurney,分布于南非的Cunene River和Zambesi River以南。裸露的头部、颈部以及腿部呈铅灰色,有细毛覆盖,雄体亦不具裸露的头盖;喙灰黑色,上颚基部及边缘呈暗红色,繁殖季节则颜色变明亮;小腿为暗灰色,繁殖季节转为暗红色。据说在安哥拉(Angola)及西南非的北部仍可发现。  编辑本段分布范围  鸟类学家发现,根据各地鸟类的特色,可将全世界分成六大地理区,每一区有独特的鸟类,且同一区内的鸟类有普遍的相似性,这是演化和适应环境的结果,其中鸵鸟分布于伊索匹亚区和非洲区(Ethiopian or Afrofropical Realm)。   鸵鸟广泛地分布在非洲低降雨量的干燥地区。在新生代第三纪时,鸵鸟曾广泛分布于欧亚大陆,在我国著名的北京人产地──周口店不仅发现过鸵鸟蛋化石,还发现有腿骨化石。近代曾分布于非洲、叙利亚与阿拉伯半岛,但现今叙利亚与阿拉伯半岛上的鸵鸟均已绝迹;它们的分布是萨哈拉沙漠往南一直到整个非洲,而澳洲则于西元1862~1869年引进,在东南部形成新的栖息地。  编辑本段鸵鸟生活习性  鸵鸟写真  鸵鸟是群居,日行性走禽类,适应于沙漠荒原中生活,嗅听觉灵敏,善奔跑,跑时以翅扇动相助,一步可跨8米,时速可达70千米/小时,能跳跃达3.5米。 为了采集那些在沙漠中稀少而分散的食物,鸵鸟是相当有效率的采食者,这都要归功于它们开阔的步阀、长而灵活的颈子以及准确的啄食。鸵鸟啄食时,先将食物聚集于食道上方,形成一个食球后,再缓慢地经过颈部食道将其吞下。由于鸵鸟啄食时必须将头部低下,很容易遭受掠食者的攻击,故觅食时不时得抬起头来四处张望。   鸵鸟常结成5~50只一群生活,常与食草动物相伴。鸵鸟用强有力的腿(仅有两趾,主要的趾发达几乎成为蹄)逃避敌人,受惊时速度每小时可达65公里。来不及逃跑,它就干脆将潜望镜似的脖子平贴在地面,身体蜷曲一团,以自己暗褐色的羽毛伪装成石头或灌木丛,加上薄雾的掩护,就很难被敌人发现啦。另外,鸵鸟将头和脖子贴近地面,还有两个作用,一是可听到远处的声音,有利于及早避开危险;二是可以放松颈部的肌肉,更好地消除疲劳。事实上,并没有人真正看到过鸵鸟将头埋进沙子里去的情景,如果那样,沙子会把鸵鸟闷死的。   雄鸵鸟在繁殖季节会划分势力范围,当有其他雄性靠近时会利用翅膀将之驱离并大叫,它们的叫声宏亮而低沉。  编辑本段食物特性  鸵鸟的营养来源很广,主食草、叶、种子、嫩枝、多汁的植物、树根、带茎的花、及果实等等,也吃蜥、蛇、幼鸟、小哺乳动物和一些昆虫等小动物,属于杂食性。公园里人工饲养的鸵鸟,用合成饲料喂养。鸵鸟在吃食的时候,总是有意把一些沙粒也吃进去,因为鸵鸟消化能力差,吃一些沙粒可以帮助磨碎食物,促进消化,且不伤脾胃。  编辑本段繁殖情况  繁殖期  鸵鸟繁殖期的时间随地区而有不同,在北非及东非则大多在旱季(七月至隔年一月)筑巢。在繁殖期内,雄鸵常以不断扇动双翅、晃动颈部的炫耀姿势占据领地,只有那些能够保卫领地的雄鸵,才能与雌鸵交配。雄鸟在其领土内摩擦出许多小浅坑,鸵鸟在繁殖期内为一雄多雌,一只雄鸵常会与5只雌鸵交配,但雄鸵鸟与其中一只(the "Major" hen)维持不严谨的单一配对关系(pair bond),此雌鸟会找其中一穴产卵,通常每二日产一枚,数日内共可产卵多达10~20枚;约有六或更多只雌鸟(the "Minor" hens)会在同一穴产卵,但不负责孵卵,一窝蛋少则30枚,多则如马赛种(Masai race)50~60枚。雄鸟夜间孵卵,白天则由雌鸟担任。孵化温度约为96.8~97.6。F。孵化温度36.90 ℃,湿度25-35RH%,孵化期40-42天。[1]   像这样去照顾其他个体的卵,在演化上是较易受淘汰的,但在其他种类的鸟中,有部分确实如鸵鸟般愿意去照顾。卵大而易招天敌的觊觎似乎是使此特征存留下来的主要原因。鸵鸟蛋虽是所有鸟类中最大的,但与其身体比例来说亦是所有鸟类中最小的,故一只鸵鸟可以覆盖大量的蛋。孵出的鸵鸟雌雄比例约为1只雄性对1.4只雌性,且鸵鸟巢极易受天敌之破坏,此二者都意味着有许多雌鸟无巢可供产卵,显然如果有其他地方供它们产卵是有好处的。而对于Major hen来说,有额外的蛋在它的巢里亦是好事,因它自己的蛋可以免于受到破坏;通常,若巢中的卵多于Major hen所能覆盖的范围,它可以辨认出自己的卵,而将其他多馀的卵滚到巢四周任其毁坏。   沙漠上有许多的掠食者喜欢偷食鸵鸟蛋,故无成鸟看守的巢很容易受到天敌的光顾,例如埃及秃鹰(Egyptian vulture)会将石头丢向卵藉以打破厚达2mm之卵壳;即使是有成鸟看守的卵,亦有土狼(Hyena)、胡狼(Jackal)等天敌,故在为期三周的产卵期及约为六周的孵化期中只有不到10%的卵会孵化。  巢  在地面凹陷处用脚趴开泥土,并用身体在泥土上压成巢,直径可达3米。  雏鸟  雏鸟为早成鸟(Precocial bird),由雄雌成鸟共同抚育,数巢雏鸟常形成一大群,由一至两只成鸟护卫,但只有其中的约15%可长至一岁大,此时它们已经长到成鸟高度了。雌鸟二年达性成熟,雄鸟较晚,约三~四年,寿命约30~40年。  编辑本段演化关系  鸟类自从侏罗纪开始出现以来,到白垩纪已经作了广大的辐射适应,演化出各式各样的水鸟及陆鸟,以适应各种不同的环境。进入新生代以后,由于陆上的恐龙绝灭,哺乳类尚未发展成大型动物以前,其生态地位多由鸟类所取代,例如北美洲始新世的营穴鸟(Diatryma),为巨大而不能飞的食肉性鸟类,填补了食肉兽的真空状态;恐鸟(Phororhacos)是南美洲中新世的大型食肉鸟,不会飞行,也填补了当时南美洲缺乏食肉兽的空缺。   其实鸵鸟的祖先也是一种会飞的鸟类,那么它是怎么变成今天的模样的呢?这与它的生活环境有着非常密切的关系。鸵鸟是一种原始的残存鸟类,它代表着在开阔草原和荒漠环境中动物逐渐向高大和善跑方向发展的一种进化方向。与此同时,飞行能力逐渐减弱直至丧失。非洲鸵鸟的奔跑能力是十分惊人的。它的足趾因适于奔跑而趋向减少,是世界上唯一只有两个脚趾的鸟类,而且外脚趾较小,内脚趾特别发达。它跳跃可腾空2.5米,一步可跨越8米,冲刺速度在每小时70公里以上。同时粗壮的双腿还是非洲鸵鸟的主要防卫武器,甚至可以致狮,豹于死地。   此外,还有几种不会飞的鸟类常被归为「走禽类(Ratites)」,在各岛屿或特殊地区,填补了缺乏哺乳类的空位,有名的例子包括在新西兰的恐鸟(Dinornis)、澳洲的奔鸟(Dromornis)和马达加斯加岛的象鸟(Aepyornis),它们不幸都在人类出现后绝灭。不过还有一些较幸运的走禽,如非洲的鸵鸟、澳洲的鸸鹋 (Emu)和食火鸡(Cassowary)、新西兰的几维鸟(Kiwis),以及南美洲的鶆 (Rheas),迄今仍幸存。   这些走禽的最大共同特征是胸骨扁平,不具龙骨突起;然而,在此飞行能力逐渐消失的演化过程中,飞行用的强健胸肌以及其附著的部位变得不再需要。不过,这些走禽是否都有相近的血缘关系,仍有待足够的化石证据来探求。   附带一提的是,渡渡鸟也是不会飞的陆鸟,但它不是走禽的近亲,而是鸠鸽类的一员,因此它没有像走禽类那种善跑的特性。  编辑本段历史记载  “安息国贡大雀。雁身驼蹄,苍色,举头高七八尺,张翅丈余,食大麦,其卵如瓮,其名驼鸟。”——郭义恭 广志   “吐火罗,永徵元年献大鸟,高七尺,黑色,足类骆驼,鼓翅而行,日三百里,能噉铁,俗谓驼鸟。”——唐书 吐火罗传  编辑本段市场开发  鸵鸟业大起大落  鸵鸟  其实论野生鸵鸟,沙特、埃及、苏丹,都比南非多得多,但要论养鸵鸟的历史和用鸵鸟生财的本事,就非南非人莫属了。南非人养鸵鸟始于1826年,最初鸵鸟的数量很少,后来由于西方王室贵族流行穿用鸵鸟羽毛制作的服装,鸵鸟一时间身价百倍,一只成年鸵鸟一年只能产1公斤羽毛,而一件最简单的鸵鸟披肩也需至少15公斤羽毛,南非农场主们纷纷饲养鸵鸟。到1913年,鸵鸟存栏数竟突破100万只。然而一战后,欧洲王室逐渐没落,鸵鸟毛需求大幅减少,鸵鸟业者纷纷转行,一些聪明的农场主留下了那些品种最优良的鸵鸟,等待新机会的到来。  在“鸵鸟之都”过把瘾  二战后,鸵鸟市场开始回暖。南非人吸取教训,开始多方面经营鸵鸟生意。他们制作了鸵鸟蛋壳工艺品,还把养鸵鸟的农场开放,吸引游客参观。许多鸵鸟农场主还联合起来成立了农业联合体,由它来统一负责鸵鸟产品的市场营销。在被称为“鸵鸟之都”的奥茨霍恩市,游客不仅能品尝到鸵鸟肉、鸵鸟蛋,还能过一把骑鸵鸟的瘾,甚至可以参加“骑鸵鸟比赛”。  编辑本段鸵鸟肉  鸵鸟肉营养丰富,具有极高的营养价值,品质优于牛肉。突出特点是:低脂肪、低胆固醇、低热量,可减少心血管疾病和癌症的发生。加之鸵鸟无疫情侵害,鸵鸟肉已成为国际公认的绿色健康食品。   譬如一般的牛、羊、鱼肉均含有较高的胆固醇和脂肪,为了避免肥胖症和产生心脑血管疾病,一些人不得不控制吃肉。   鸵鸟肉则相反。每百克鸵鸟肉的胆固醇含量是牛肉的6分之1,是鸡肉的18分之1。脂肪含量是牛肉的3分之1,是鸡肉的6分之1。钙含量是牛肉的3倍,是鸡肉的7倍。铁含量是牛肉的5倍,是鸡肉的7倍。锌含量是牛肉的3倍,是鸡肉的6倍。   如今鸵鸟肉不仅汉族人可以食用,现在信奉伊斯兰教的人们也可以食用了。北京市天安门东42公里的大厂回族自治县环宇清真肉类有限公司就已经经营起了精分割的清真鸵鸟肉。  编辑本段鸵鸟皮  比牛皮韧度多5倍-鸵鸟皮   1.皮质柔软,韧度却强过牛皮五倍之多,有耐揉不裂纹之优点。   2.鸵鸟皮具有凸出的小图粒,那一颗颗的图粒以不规则排列构成美丽悦目的唯一图案,没有两幅是完全相同的。而每一张鸵鸟皮的优劣分别,是由皮面的毛细孔颗分布面积是否达到水平,以及毛细孔颗粒分布是否均匀、皮面是否曾受伤有瑕疪来区分。   3.鸵鸟皮革制品轻软、透气、柔韧、美观、耐用、且富手感,可适用于靴鞋、皮带、大衣、手袋、公事包、装饰品及名贵家具的制造材料,且因透气,常穿鸵鸟皮做成的皮鞋不易得香港脚!   4.鸵鸟皮因富含胶原蛋白,所以也可食用,不过因为皮单价高,很少人知道这等美味。   五、因富含高品质胶原蛋白,可取代猪皮做为胶原蛋白化妆品的原料。  编辑本段鸵鸟蛋  鸵鸟蛋的图鉴(8张) 鸵鸟蛋  1.鸵鸟蛋一般长达15公分,宽8公分,重量可达1。5公斤,相当于30枚鸡蛋,是目前世界上最大的蛋。一粒鸵鸟蛋,可供24人享用。蛋壳厚而坚硬,完整的鸵鸟蛋可以承受90KG 的重量而不破。2、鸵鸟蛋中的营养极高,每百克含22.54克tnt,80毫克的金质,4.03毫克银质。煮熟后,蛋白晶莹剔透,口感滑嫩有弹性,鸵鸟蛋做成的冰激淋也非常可口。   3.蛋壳是不可多得的工艺品之天然材质,可雕刻或绘画成各种精巧、高贵的装饰摆设工艺品。   4.鸵鸟蛋壳含有丰富的天然碳酸钙,易于人体吸收。  编辑本段鸵鸟羽毛  1.雏鸟到12月龄间,所生长出的雏羽可加工成保暖用品,如羽毛衣、睡袋等。   2.鸵鸟成鸟的羽毛,特别是翅膀末端的白羽,质地高雅绚烂,可制成华丽的羽饰品。在欧洲上流社会,早就将鸵鸟羽毛做为头饰,或将它们缝在衣裙上,用来作装饰用品,而美国拉斯维加斯的歌舞剧女郎的羽毛装饰也都是使用鸵鸟羽毛。   3、鸵鸟羽毛是不带静电的羽毛,其抗静电的特性已应用在电脑、电子产品的工厂里。  编辑本段鸵鸟精神  比  鸵鸟艺术形象(5张)喻逃避 ,不敢面对现实,不肯正视困难和危险的人。   这个意思来缘于每当鸵鸟遇到劲敌追赶无法脱身的时候不是战斗,而是把头深深的埋进土里,不敢面对危险,所以人们就把那些遇到危险只想逃避的人的行为叫做鸵鸟行为。这就是所谓的“鸵鸟心理”,但是事实上这是没有科学依据的。鸵鸟在遇到危险时会将头埋在沙子中的说法,其实是人类的一种误解。鸵鸟生活在炎热的沙漠地带,那里阳光照射强烈,从地面上升的热空气,同低空的冷空气相交,由于散射而出现闪闪发光的薄雾。平时鸵鸟总是伸长脖子透过薄雾去查看,而一旦受惊或发现敌情,它就干脆将潜望镜似的脖子平贴在地面,身体蜷曲一团,以自己暗褐色的羽毛伪装成石头或灌木丛,加上薄雾的掩护,就很难被敌人发现。另外,鸵鸟将头和脖子贴近地面,还有两个作用,一是可听到远处的声音,有利于及早避开危险;二是可以放松颈部的肌肉,更好地消除疲劳。事实上,并没有人真正看到过鸵鸟将头埋进沙子里去的情景,如果那样,沙子会把鸵鸟闷死的。
2023-01-07 13:49:031

iso中AutoLayout和Autoresizing Mask的区别

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

200万年前有鸵鸟吗?

有鸵鸟的祖宗。
2023-01-07 13:49:229

鸸鹋英文介绍

Emu is a large, flightless Australian bird(Dromiceius novaehollandiae) related to and resembling the ostrich and the cassowary. 鸸鹋一种大型、不会飞的澳大利亚鸟(鸸鹋鸸鹋科),同鸵鸟与食火鸡类似且有血缘关系Emus grow to almost two metres and can run at nearly 5 kph.鸸鹋身高可达两米,跑速可达每小时近5公里。 It is respected throughout the world for it" s legendary protective instincts. However, it is known to flap aimlessly when attacked by any member of the Keano Massivus species.地球人都知道鸸鹋传奇般的自卫本能,但是,大家也知道他在受到基恩这种大块头的袭击时却只能漫无目的的乱拍翅膀。
2023-01-07 13:50:181

有种大鸟叫he tuo 有图片吗

鹤鸵(he tuo)的中文别名是食火鸡,英文为Cassowary,二名法是Casuariuscasuarius。归鹤鸵科、鹤鸵属等。产与澳大利亚-巴布亚地区的一种大型不能飞的鸟类,为鹤鸵目鹤鸵科唯一的代表。它是世界上第三大的鸟类,仅次于鸵鸟和鸸鹋,翼非常退化,比鸵鸟和美洲鸵鸟的翅膀更加退化。鹤鸵目和美洲鸵鸟一样,也有三个脚趾。鹤鸵目分布于澳大利亚和新几内亚等地,有两科四种。 望采纳
2023-01-07 13:50:231

梦见 看别人画京剧脸谱 是什么意思?

估计是你对这方面有点特长!
2023-01-07 13:50:349

鸸鹋是什么样子?(要图片哦)

右边的动物就是鸸鹋!
2023-01-07 13:51:273

世界上体积最大的鸡

  南方鹤鸵是一种鹤驼目、鹤驼科类生物,大型鸟类,不会飞,分布在澳大利亚和新几内亚的热带雨林中,它们的食物几乎全部是水果。身材高大,脚爪锋利,擅长踢打。分布于太平洋诸岛屿,包括中国的台湾省、东沙群岛、西沙群岛、中沙群岛、南沙群岛以及菲律宾、汶莱、马来西亚、新加坡、印度尼西亚的苏门答腊、爪哇岛以及巴布亚纽几内亚。澳大利亚和纽西兰,包括澳大利亚、纽西兰、塔斯马尼亚及其附近的岛屿。下面由我带大家一起涨涨知识吧!    保护级别   列入《世界自然保护联盟》IUCNver 3.1:2009年鸟类红色名录——低危LC。    分布范围   分布于太平洋诸岛屿,包括中国的台湾省、东沙群岛、西沙群岛、中沙群岛、南沙群岛以及菲律宾、汶莱、马来西亚、新加坡、印度尼西亚的苏门答腊、爪哇岛以及巴布亚纽几内亚。澳大利亚和纽西兰,包括澳大利亚、纽西兰、塔斯马尼亚及其附近的岛屿。    形态特征   双垂鹤驼双垂鹤驼,高度155-170厘米,重量35-60公斤,雌性略大 。    栖息环境   双垂鹤驼的脚爪与足迹双垂鹤驼生活在热带雨林中,偶尔也会在红树林和水果种植园活动,单独活动。    生活习性   它们的食物几乎全部是水果,扮演着种子传播的重要角色 。    繁殖方式   未成年的南方鹤鸵双垂鹤驼繁殖季节在6-10月,雄性孵化,孵化期50天左右,它们会照顾后代16个月    鹤驼服饰   鹤驼服饰是一家集研发、生产、营销、物流为一体的户外休旅男装品牌。品牌专注为追求品位生活,喜欢户外旅游、崇尚自由、舒适、健康生活的男士提供高品质休闲服饰;倡导回归自然本真,悠然惬意的生活方式。   公司坐落在着有“中国休闲服装名城”之称的石狮,占地面积10000平米 ,公司现有员工500多人。其中高阶管理人才近百人,拥有一支国内一流的服装设计团队,9个生产组,6条国际标准化作业生产流水线,配套装置1000多套台,年生产能力近50万件。现有20多个规模专柜,主要分布在北京、天津、广州等国内一线城市。   1973年,国际品牌“CASSOWARY”正式定义。正式提出了“户外休旅男装”的概念,以“Cassowary”的桀骜不羁、自然唯美、唯一的本性为产品溯源,融合人与自然完美结合理念,采用国际顶尖的纯棉水洗高阶生产工艺,打造高品休闲服饰。   2006年,CASSOWARY进入中国市场,为了更加融合中国消费群体的生活习惯和消费习惯,确立本土化品牌“Cassowary”的中文名“HETUO|鹤驼”,开拓中国市场。   2009年,鹤驼构建了亚太地区发展蓝图,并以“中国休闲服装名城”的石狮为根据地,并以品牌加盟的形式在北京、天津、广州等一线城市发展20多家规模专柜,率先向国内一线城市辐射,奠定了鹤驼中国市场新的里程碑。   2012年,鹤驼进军电子商务,在休闲男装领域开启突破口,引领中国户外休旅男装品牌迈向新的高度。
2023-01-07 13:51:401

什么动物一般同学不太了解?能给我详细介绍一下吗?我要写550字的作文。

鸸鹋érmiáo(又名澳洲鸵鸟)。鸸鹋能堂而皇之地走上国徽,得益于它是澳大利亚最大的鸟,是澳大利亚的象征性动物之一, 鸸鹋是世界最大的陆地鸟之一,也是世界上最古老的鸟种之一,是鸟纲鹤鸵目鸸鹋科唯一残存种。 鸸鹋(鸸鶓) 鸟名。形似鸵鸟而较小,体高约1.5米。嘴短而扁,羽毛灰色或褐色。翅膀退化,足三趾,腿长善走。产于 澳洲 森林中,吃树叶和野果。是仅次于鸵鸟的最大鸟,栖息于开阔森林与平原,羽毛发育不全,具纤细垂羽,副羽甚发达,头、颈有羽毛、无肉垂。 鹤鸵目(Casuariiformes)鸸鶓科(Dromaiidae或Dromiceiidae)唯一生存的鸟类。鹤鸵目还包括鹤鸵(cassowary)。鸸鶓产於澳大利亚,不能飞翔。是现存的另一种最大鸟类,身高超过1.5公尺(5呎),体重超过45公斤(100磅)。鸸鶓(Dromaius novaehollandiae或Dromiceius novaehollandiae)是由殖民者所造成的几个绝灭类型中唯一的幸存者,体健壮,腿长,同其亲属鹤鸵一样。两性体羽均为褐色,头和颈暗灰。鸸鶓的跑速每小时可达50公里(30哩)。被困时用三趾的大脚踢人,鸸鶓终生配对。每窝产710枚暗绿色卵,卵长13公分(5吋)。在地面上筑巢。雄鸟孵卵约60天。体上有条纹的幼雏出壳後很快就能跟著成鸟跑。鸸鶓成小群取食果实和昆虫,也可能毁坏庄稼。特别的气管结构在繁殖期可发出巨大的隆隆声。有3个亚种栖息於澳大利亚北部、东南部和西南部,第四个亚种(现已绝灭)曾栖息於塔斯马尼亚岛。 鸸鹋广泛分布于澳大利亚大陆,但是在开阔地区比较常见而在山地和茂密的森林等地比较罕见。鸸鹋易于饲养,被广泛引入其他国家,在我国很多动物园中都能见到。它外表很像非洲沙漠中的鸵鸟,但没有鸵鸟高大,其身高约1.5米-2米,成年雌性鸸鹋比雄性的大。体重数十公斤不等,从动物分类学来说,它应属于鸵鸟类中的一种。 鸸鹋喜爱生活在草原、森林和沙漠地带,全身披着褐色的羽毛,擅长奔跑,时速可达70公里,并可连续飞跑上百公里之遥。鸸鹋虽有双翅,但同鸵鸟一样已完全退化,无法飞翔。以野草、种子、果实等植物及昆虫、蜥蜴等小动物为食它能泅水,可以从容渡过宽阔湍急的河流。鸸鹋耐饥渴,长相一直保持史前时代的形状,没有丝毫变化,这令一些动物学家深感困惑。 鸸鹋或出双入对,或三五成群,极少见有踽踽独行的。鸸鹋的成熟期长达3年,一只成年雌鸟只在每年的11月至翌年的4月产蛋,每次7-15枚,而孵卵的责任由雄鸟来承担。在整个孵化期间,雄性在长达两个半月的时间里几乎不吃不喝,表现出极强的“父爱”,它们完全靠消耗自身体内的脂肪来维持生命,直到小鸸鹋脱壳而出,新生命的啼鸣回响在湛蓝的天空……每次孵化后,雄性体重会降低许多,雏鸟出壳后,仍由父亲照料近2个月。 鸸鹋很友善,若不激怒它,它从不啄人。它对食物也不讲究,主要以草类为食,也爱吃一些草蝶及昆虫。在野生动物保护区里,鸸鹋能经常改善伙食,吃到游人喂它的面包、香肠及饼干等。当有汽车在公路边停下来时,鸸鹋毫无戒备,反而会大摇大摆地踱步而来,争抢着把头伸进车窗,一是对你表示亲近,二是希望你能给点好东西吃。 科学研究表明,数十万年的地质和气候变迁,仍无法改变它们最初形成的原始型态,这种神奇的适应能力在自然界的进化史中是极为罕见的。
2023-01-07 13:51:462

autolayout自动布局适用于动态的cell吗

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

求助,最近使用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的意义。 至此程序达到了预期的效果。
2023-01-07 13:52:081

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

食火鸡vs鸸鹋,谁会赢?

没有悬念,食火鸡会赢。动物PK的胜负在很大程度上取决于勇气,如果一方没有斗志,它会主动退却,按照人类的评判标准,退却就算输了。鸸鹋的腿脚没有食火鸡那样强壮,而鸟的打斗很多都是靠腿的蹬踢,所以即使在双方都拼命的时候,食火鸡的“武器”更占优势,取胜的概率大一些。
2023-01-07 13:53:301

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

1.点击需要添加动画的幻灯片2.点击右上角的“添加效果” 就可以了
2023-01-07 13:53:422

如何对使用了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约束为: 1datePickerView.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是否以弹出: 1@property (nonatomic, assign) BOOL hasShowPickerView;接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:12345678- (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约束: 1[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中设置的值:1234567891011121314151617181920212223242526272829- (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之前我们写程序控制界面的构成就好比是开一辆手动挡的汽车,虽然频繁换挡(修改frame)很繁琐,却也很享受那种可以完全控制汽车档位的自由感。使用了autolayout之后则一下子升级为了自动挡汽车,切换档位的活不再由我们直接操作,而只能通过油门(constraints)的大小来间接的改变汽车的档位。在自动挡汽车里,我们必须要放弃直接控制档位的想法,那是不可能的了,我们必须要学会通过熟练掌握脚下的油门和刹车来控制车速!在习惯了自动挡之后,相信大家也一样能够得心应手的做自己想做的事情。
2023-01-07 13:53:501

有一个怪鸟,它是什么鸟

鸸鹋 中文:鸸鹋 érmiáo 英文:emu 鸸鹋,又名澳洲鸵鸟,它能堂而皇之地走上国徽,得益于它是澳大利亚最大的鸟,是澳大利亚的象征性动物之一, 鸸鹋是世界最大的陆地鸟之一,也是世界上最古老的鸟种之一,是鸟纲鹤鸵目鸸鹋科唯一残存种。 鸸鹋(鸸鶓) 鸟名。形似鸵鸟而较小,体高约1.5米。嘴短而扁,羽毛灰色或褐色。翅膀退化,足三趾,腿长善走。产于 澳洲 森林中,吃树叶和野果。是仅次于鸵鸟的最大鸟,栖息于开阔森林与平原,羽毛发育不全,具纤细垂羽,副羽甚发达,头、颈有羽毛、无肉垂。 鹤鸵目(Casuariiformes)鸸鶓科(Dromaiidae或Dromiceiidae)唯一生存的鸟类。鹤鸵目还包括鹤鸵(cassowary)。鸸鶓产于澳大利亚,不能飞翔。是现存的另一种最大鸟类,身高超过1.5公尺(5呎),体重超过45公斤(100磅)。鸸鶓(Dromaius novaehollandiae或Dromiceius novaehollandiae)是由殖民者所造成的几个绝灭类型中唯一的幸存者,体健壮,腿长,同其亲属鹤鸵一样。两性体羽均为褐色,头和颈暗灰。鸸鶓的跑速每小时可达50公里(30哩)。被困时用三趾的大脚踢人,鸸鶓终生配对。每窝产710枚暗绿色卵,卵长13公分(5吋)。在地面上筑巢。雄鸟孵卵约60天。体上有条纹的幼雏出壳後很快就能跟著成鸟跑。鸸鶓成小群取食果实和昆虫,也可能毁坏庄稼。特别的气管结构在繁殖期可发出巨大的隆隆声。有3个亚种栖息於澳大利亚北部、东南部和西南部,第四个亚种(现已绝灭)曾栖息于塔斯马尼亚岛。 鸸鹋广泛分布于澳大利亚大陆,但是在开阔地区比较常见而在山地和茂密的森林等地比较罕见。鸸鹋易于饲养,被广泛引入其他国家,在我国很多动物园中都能见到。它外表很像非洲沙漠中的鸵鸟,但没有鸵鸟高大,其身高约1.5米-2米,成年雌性鸸鹋比雄性的大。体重数十公斤不等,从动物分类学来说,它应属于鸵鸟类中的一种。 鸸鹋喜爱生活在草原、森林和沙漠地带,全身披着褐色的羽毛,擅长奔跑,时速可达70公里,并可连续飞跑上百公里之遥。鸸鹋虽有双翅,但同鸵鸟一样已完全退化,无法飞翔。以野草、种子、果实等植物及昆虫、蜥蜴等小动物为食它能泅水,可以从容渡过宽阔湍急的河流。鸸鹋耐饥渴,长相一直保持史前时代的形状,没有丝毫变化,这令一些动物学家深感困惑。 鸸鹋或出双入对,或三五成群,极少见有踽踽独行的。鸸鹋的成熟期长达3年,一只成年雌鸟只在每年的11月至翌年的4月产蛋,每次7-15枚,而孵卵的责任由雄鸟来承担。在整个孵化期间,雄性在长达两个半月的时间里几乎不吃不喝,表现出极强的“父爱”,它们完全靠消耗自身体内的脂肪来维持生命,直到小鸸鹋脱壳而出,新生命的啼鸣回响在湛蓝的天空……每次孵化后,雄性体重会降低许多,雏鸟出壳后,仍由父亲照料近2个月。 鸸鹋很友善,若不激怒它,它从不啄人。它对食物也不讲究,主要以草类为食,也爱吃一些草蝶及昆虫。在野生动物保护区里,鸸鹋能经常改善伙食,吃到游人喂它的面包、香肠及饼干等。当有汽车在公路边停下来时,鸸鹋毫无戒备,反而会大摇大摆地踱步而来,争抢着把头伸进车窗,一是对你表示亲近,二是希望你能给点好东西吃。 科学研究表明,数十万年的地质和气候变迁,仍无法改变它们最初形成的原始型态,这种神奇的适应能力在自然界的进化史中是极为罕见的。
2023-01-07 13:53:551

日照重庆里面林波偷的是什么鸟

鸸鹋
2023-01-07 13:54:003

如何加强 iOS 里的列表滚动时的顺畅感

如果你想要如丝般顺滑的效果,那么:1、每次都看一下有没有能重用的 cell,而不是永远重新新建2、Cell 里尽量不要用 UIView 而是全部自己用 drawRect 画3、图片载入放到后台进程去进行,滚出可视范围的载入进程要 cancel 掉4、圆角、阴影之类的全部 bitmap 化,或者放到后台 draw 好了再拿来用5、Cell 里要用的数据提前缓存好,不要现用现去读文件6、数据量太大来不及一次读完的做一个 load more cell 出来,尽量避免边滚边读数据,这样就算是双核的 CPU 也难保不会抽。
2023-01-07 13:54:123

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

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

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

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

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

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

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

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

肺yie尖不扩张对身体有什么影响有谁知道哇

肺不张 :表示已经充气的肺变为部分或完全无气,可以由于支气管阻塞(包括内在或外在因素)或肺部受外压等原因所引起.支气管内在阻塞最常见的原因有吸入性异物,浓厚的粘液,炎性渗出物,支气管肿瘤,支气管炎性肉芽组织或炎性支气管狭窄等.支气管外在阻塞可由于淋巴结肿大(包括结核,肿瘤和结节病等),支气管周围肿瘤等所以先抗炎治疗,在行检查是可以的,如果是炎性的,治疗后好了,就可以不用CT,节约成本
2023-01-07 13:52:211

几字组词有哪些

标准偏差苦读者牙根
2023-01-07 13:52:223

things前面加原形吗?

这属于复数名词,前面应该用的是形容词,形容词当然是原形。
2023-01-07 13:52:251

充电器上的output是什么意思

就是输出的意思
2023-01-07 13:52:253

如何对使用了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的意义。  至此程序达到了预期的效果。
2023-01-07 13:52:171

几字组词有哪些词语

几字组词有哪些词语几字组词如下:几年 几时 几何 几乎 几率 几多 几曾 几许 未几茶几 条几 无几
2023-01-07 13:52:171

thing 这个名词,有复数things吗?

有thingsn. 事,事态He said he would straighten up and fly right and assured me that he would never involve himself in things of that sort.他说他要改邪归正,并向我保证不再做那种事了
2023-01-07 13:52:142

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

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