博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iPhone上的有没有立即绘制的接口?
阅读量:6891 次
发布时间:2019-06-27

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

    玩过一些平台如win32.bada上面都有立即绘制的接口。例如win32下 invalidatRect之后,updatewindow就可以立即绘制无效区域到窗口。

那iphone有没有类似的接口呢?

除了setNeedDisplayInRect这个发出重绘的异步接口,有没有一个立即刷屏的接口呢,就是说一个同步绘制的方法?实际工作中很容易产生这样的想法,即时刷新。

答案是没有好的方式。我们只能把当前runloop的消息(来自input resourse 或者timer resourse)处理完成。等到下一个循环进入drawrect方法完成实际绘制。

所以若在一个调用堆栈里面有复杂的计算或耗时的操作,中间又夹杂着一些绘制需求,时而发出setNeedDisplayInRect,其实这些都绘制是不能

立即完成的,只能等到下个runloop去drawRect了。很明显不符合实际的调用需求----立即绘制 更新UI界面。。。

所以最好把这些耗时的操作放到线程中去处理,减少ui主线程的繁杂度,让UI的轻度运行。工作线程可以向UI线程(主线程)发出实际的绘制请求,

这样UI线程就能够即时刷新呈现画面。问题的根本还是设计问题。

 

,都是在当前任务的处理内取出下一个消息执行,是一种runloop的执行嵌套。估计win32的updatewindow也是这样的原理,

这些方法也许可以救急,但是软件的框架设计上最好遵循上述原则。

 

转载于:https://www.cnblogs.com/ianwang/archive/2011/11/22/2259297.html

你可能感兴趣的文章
通过angularjs的directive以及service来实现的列表页加载排序分页(转)
查看>>
重构一个功能块的总结
查看>>
Leetcode-Database-176-Second Highest Salary-Easy(转)
查看>>
跑步时,身体在前30分钟的神奇体验(转)
查看>>
URAL1826. Minefield 题解
查看>>
centos6.8版本改系统语言成中文简体显示-配合GNOME等可视工具
查看>>
js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结
查看>>
什么是自然语言处理技术
查看>>
Applet再学习
查看>>
白盒测试实践-华科软硕1706班1组 2017.12.13记录
查看>>
冒泡排序
查看>>
发布网站碰到的问题
查看>>
关于Connection must be valid and open.
查看>>
php中的cookie用法
查看>>
解决html中 在不同浏览器中占位大小不统一的问题
查看>>
ibatis源码学习3_源码包结构
查看>>
职业经理人-带人要带心
查看>>
UNIX网络编程——epoll 系列函数简介、与select、poll 的区别
查看>>
分辨率与行场同步信号的关系
查看>>
FTP
查看>>