iphone - 插入 UIImageView 作为 subview 滞后

标签 iphone ios uinavigationcontroller uiimageview uiimage

我有一个 UIImageView,其中包含一个相当大的图像(3 +/- MB),我将其插入以用作背景图像作为 subview ,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view insertSubview:imageView atIndex:0];
}

问题是当 View 被导航 Controller 推送时,过渡不平滑;它非常不稳定,因为(我假设)图像很大并且将其加载到 ImageView 中的成本很高。我以前用过

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"foobar"]];

但是因为图像太大,所以代码放大了图片,它只显示了很小的一部分,而且非常接近。

有更好/更有效的方法来做到这一点吗?

最佳答案

我尝试的是:首先调整图像大小,使其达到界面中实际的大小。为此,请使用其 drawInRect: 方法将图像重新绘制到图像上下文 (UIGraphicsBeginImageContextWithOptions) 中。我的书中有很多关于此的信息:http://www.apeth.com/iOSBook/ch15.html

例如,要将图像缩小到其大小的一半:

UIImage* lin = [UIImage imageNamed: @"lin.png"];
CGSize s = lin.size;
CGFloat scale = 0.5;
s.width *= scale; s.height *= scale;
UIGraphicsBeginImageContextWithOptions(s, YES, 0);
[lin drawInRect:(CGRect){{0,0}, s}];
lin = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

此外,效率低下的根源可能在其他地方。使用模拟器中的新“调试”菜单来查找界面中绘制效率低下的其他内容。 WWDC 2011 有一个关于高效绘图的精彩视频。动画正是这些低效率表现出来的地方,所以我认为你走在正确的轨道上。

关于iphone - 插入 UIImageView 作为 subview 滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626408/

相关文章:

ios - 带有 Swift 的 iOS 中的持久对象

ios - 将标签栏添加到导航 Controller

iPhone ui 导航 - 从页面跳转

iphone - 需要很多随机数

iphone - 无法在 UITextView 中显示不同颜色的选定文本,我该怎么办?

ios - 我们可以在 ios 应用程序中进行 RTMP 流式传输吗?

ios - 为仅在以后的 SDK 中可用的类添加属性

ios - Xcode如何强制重建依赖框架目标

ios - 调用popToRootViewController动画: on back button pressed

iphone - 发现 UITextView 委托(delegate)方法中存在泄漏。对解决方案感到困惑