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

本文共 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

你可能感兴趣的文章
[HNOI2019]校园旅行
查看>>
vue实现菜单切换
查看>>
Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
查看>>
Maven学习总结(30)——Maven项目通用三级版本号说明
查看>>
如何提高iOS开发技能
查看>>
cocos2d-x HelloWorld 代码一撇
查看>>
2015.4.17专线割接
查看>>
map持久化类 Properties;对象序列化 ObjectOutputStream
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
ubuntu RPLIDAR A2的使用
查看>>
不用加减乘除实现加法运算
查看>>
一些有趣的javascript小测试
查看>>
数据库 innodb&MyISAM 简单区别
查看>>
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
查看>>
Android中下拉框spinner的两种用法
查看>>
Andrew Ng 的 Machine Learning 课程学习 (week2) Linear Regression
查看>>
Windows下安装MongoDB
查看>>
MyBatis在insert插入操作时返回主键ID的配置
查看>>
使用eclipse的todo标签管理任务
查看>>
iOS 开发自定义一个提示框
查看>>