博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIView and UIWindow
阅读量:6474 次
发布时间:2019-06-23

本文共 1107 字,大约阅读时间需要 3 分钟。

UIView的下列属性是可以动画的。

  • @property frame 
  • @property bounds 
  • @property center 
  • @property transform 
  • @property alpha 
  • @property backgroundColor 
  • @property contentStretch

UIView 负责展示内容,构造UIVIEW层级。UIWindow不负责显示,他是UIView的容器。UIWIndow一旦创建就一直存在不变了。变化的是显示在里面的UIVIew。有比如,我们链接了外接显示屏,则会创建第二个UIWindow来表示它。

 一个view对象表达了屏幕上的一个矩形区域,负责绘制和响应touch事件,同时可以包含子view完成view的层级表达。大多数我们都是使用UIView,但也可以自定义view.

UIKit的UIView都对应有一个CALayer对象,它是负责view内容的递交和动画的。在他后面是Core Animation rendering Object 和hardware buffer来表达屏幕的实际bits。

core animation layer object对于性能至关重要。绘制view的代码在被执行的时候,结果会被core animation缓存,在之后做重绘的时候,会直接从缓存获取。

 

坐标系变换:

如果想对整个UIView进行线性变换,通过修改transform属性。

如果想对部分UIView进行线性变换,在drawRect方法中通过修改Grpaphic Context。

可以通过修改transform属性实现动画,但是动画都是基于center的。

 

如何让View更有效:

除非必要,不要定制drawing行为

尽可能设置opaque属性为YES。这告诉UIKit在view后面的view是不需要递交绘制的,可以提高性能。

content mode尽量不要使用,这个会导致改UIView不断重绘。在其他模式下,一旦内容被绘制后,会做一个内容的快照,下次再展现UIVIew的内容的时候,不会再次调用Drawing代码,而是使用快照。如果需要重绘,则调用setNeedDisplay或者setNeedDisplayInRect方法,则在runloop的下一次执行时重绘。

滚动时调整drawing行为,例如降低显示质量,等停止滚动再调整回来。

不要UIControl中添加subview,只对修改它提供的属性,否则可能会导致不确定的行为。

 

转载于:https://www.cnblogs.com/gabrialrx/p/4911991.html

你可能感兴趣的文章
Android 的Margin和Padding属性以及支持的长度单位
查看>>
HDU ACM 1050 Moving Tables
查看>>
Django templates加载css/js/image等静态资源
查看>>
Eclipse C + GTK2.0环境构筑
查看>>
caffe solver
查看>>
Rhel6-heartbeat+lvs配置文档
查看>>
[CF340D]Bubble Sort Graph/[JZOJ3485]独立集
查看>>
ORACLE分科目统计每科前三名的学生的语句
查看>>
第一次冲刺--查看活动详情用户场景分析
查看>>
0317复利计算的回顾与总结
查看>>
函数对象
查看>>
Sharepoint学习笔记—习题系列--70-573习题解析 -(Q70-Q72)
查看>>
最全最新个税计算公式---今天你税了吗?
查看>>
linux shell 正则表达式(BREs,EREs,PREs)差异比较(转,当作资料查)
查看>>
MongoDB--CSharp Driver Quickstart .
查看>>
#pragma mark 添加分割线 及 其它类似标记 - 转
查看>>
遗传算法实现自动组卷、随机抽题 (转)
查看>>
二分法求平方根(Python实现)
查看>>
使用startActivityForResult方法(转)
查看>>
so在genymotation中错误问题
查看>>