作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用它来移动我的图像:
meteorDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(moveImage:)];
moveImage:
方法:
-(void) moveImage:(CADisplayLink *)sender{
CGPoint img;
imgLocation = imgImageView.center;
if (img < 100) {
img.y++;
}
else{
imgLocation.y = 0;
}
imgImageView.center = imgLocation;
}
setNeedsDisplay
这里没有效果?
setNeedsDisplay
的意义何在? ?
最佳答案
我假设 imgImageView
是 UIImageView
的一个实例.如果不是 UIImageView
的实例,编辑您的问题,告诉我们它是什么。
更改 center
View 的属性从不要求您的应用重绘 View 。显示服务器(它是一个单独的进程,在 iOS 6 中名为 backboardd
,在早期版本中名为 springboard
)已经拥有 View 像素数据的副本。当您更改 View 的 center
, View 只是通知显示服务器它的新位置,显示服务器将 View 的像素数据复制到屏幕的适当部分。
从而改变center
View 的属性永远不需要您发送 setNeedsDisplay
.
更具体地说,UIImageView
甚至没有实现 drawRect:
.相反,UIImageView
当您设置其图像时,只需将其图像的像素数据发送到显示服务器。所以即使你发送setNeedsDisplay
到 UIImageView
,它仍然不会运行任何drawRect:
方法。
顺便说一句,您可以在自己的 UIView
中执行此操作子类也是,通过设置 self.layer.contents
到 CGImageRef
而不是实现drawRect:
.您将需要 #import <QuartzCore/QuartzCore.h>
去做这个。当然,UIImageView
也做其他事情,比如处理动画和可调整大小的图像。
关于ios - setNeeds显示困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755097/
我是一名优秀的程序员,十分优秀!