我一直在开发一个非常图形密集的iPad应用程序.我已经能够在iPad 2上挤出相当多的性能,但新iPad的@ 2x显卡在内存部门打包了很多.使用仪器中的活动监视器我能够看到我的应用程序的大小迅速增加到300MB-400MB范围,但我没有收到任何低内存通知.我使用a UINavigationController来管理我的视图,因此进入堆栈会对内存产生累积影响,最终会终止.我没有在iPad 2上遇到这个问题,我收到了预期的低内存通知.我的应用程序已被编码为尽可能清理并在该设备上表现良好.
我已经阅读了一些类似的问题:
IOS应用程序因低内存而被杀,但没有内存警告收到
iPhone应用程序使用150 MB内存,仍然没有低内存警告!
这些建议似乎都没有帮助.
我插入了代码以强制发送低内存通知:
[[UIApplication sharedApplication] _performMemoryWarning];
Run Code Online (Sandbox Code Playgroud)
这会导致非活动视图按预期卸载并将内存消耗恢复正常.这使用私有API并且是hack,因此出于实际原因不是解决方案. 如何让我的设备正确响应低内存条件,让我的应用程序知道它需要清理?
我开发了iOS应用程序并在iOS6设备上进行了测试.在测试时,我意识到我的应用程序没有按预期响应方向更改.
这是我的代码:
// Autorotation (iOS >= 6.0)
- (BOOL) shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)
确切地说,我想知道iOS中的方向更改调用了哪些方法.
我一直在研究iPad应用程序,该应用程序已经在iPad 2上进行了相当广泛的测试.我最近获得了一个"新iPad"(iPad 3),该应用程序感觉明显变慢.在iPad 2中如丝般顺畅的动画/晃动行为现在在新iPad上感觉非常苛刻.
我做了很多标准的UI性能提示:使用shadowPaths,使用CoreGraphics绘制UITableViewCells,栅格化不经常更改/不需要动画的视图.
在将我的应用程序转换到iPad 3时,我应该注意是否有任何陷阱?
更新
我发誓我之前尝试过这个,但是从我的UIViews视图中删除圆角最终显着加快了应用程序的速度.clipToBounds似乎也是一个重要的性能损失(虽然奇怪的是...设置视图的图层的maskToBounds似乎没问题,这对我来说没有意义).这个和其他调整的某种组合似乎已经解决了这个问题.
一旦我对应用程序进行了第二次视觉传递,我将找到一种以更高效的方式重新实现圆角的方法.
我正在使用下一个功能在我的应用中保存照片:
UIImageWriteToSavedPhotosAlbum(pngImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
Run Code Online (Sandbox Code Playgroud)
它适用于iOS 5.1.1设备和iPod/iPhone iOS 6.0设备.
但奇怪的是,使用iOS 6.0的iPad 3无法使用照片保存并返回以下错误:
错误域= ALAssetsLibraryErrorDomain代码= -3310"数据不可用"UserInfo = 0x1cd6afc0 {NSLocalizedRecoverySuggestion =启动照片应用程序,NSUnderlyingError = 0x1cdaa140"数据不可用",NSLocalizedDescription =数据不可用}
有没有人遇到这个问题,有什么方法可以解决它?
我刚买了新的iPad(3),目前正在测试使用CoreGraphics的高分辨率版本的绘图应用程序.
在普通的1024x768模式下,iPad在性能上或多或少相似 - 在快速绘制时只有轻微的延迟.
但是,当我尝试在高分辨率画布(2048x1536)上绘画时,该应用程序变得非常缓慢且滞后.这是因为CoreGraphics主要是由CPU计算的(我认为它不比iPad2快得多)并且还需要多做4倍的工作?
我基本上改变了我的绘图程序
UIGraphicsBeginImageContext(CGSizeMake(1024, 768));
Run Code Online (Sandbox Code Playgroud)
至
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1024, 768), NO, 0.0);
Run Code Online (Sandbox Code Playgroud)
为了实现视网膜绘图,线条非常漂亮和清晰,图像在2048x1536中保存.但如上所述,延迟和滞后使其无法用作绘图工具.
除了在openGL中重写我的应用程序(由于时间限制和早期在关键混合模式下尝试不成功而不是一个选项),我可以做些什么来优化在新iPad上以视网膜模式运行的CoreGraphics应用程序?
当UIDocumentInteractionController被解除时,将移除呈现视图控制器的视图,包括来自UINavigationController的元素.
UIDocumentInteractionController解除并移除呈现视图控制器的视图,留下一个纯白色/灰色框,其中呈现视图控制器以前存在.在此之后,应用程序不再响应任何触摸事件.
这在运行iOS 7 for Quick Look Pdf Reader的iPad模拟器(iOS 7.0)和iPad 3(Wifi)上发生.
无论应用程序是针对iOS 6.1还是iOS 7 SDK编译的,都无关紧要
请让我知道你的建议.
据我们所知,iPad 3的分辨率为2048×1536.对于带有视网膜显示器的iPhone 4,我们在我们的捆绑中放置了名为@ 2X的大图像和一个普通图像.
因此,对于iPad 3应用程序开发,我们还需要放置两个图像,一个是正常大小,另一个是大尺寸,@ 2X名称..?
有谁知道请回复.
我试图从用户可以绘制的视图中获取图像,或者添加一些其他视图.iPad1和iPad到目前为止一切正常.但在iPad3上它像狗一样运行.我只是使用图层renderInContext方法.
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.viewDrawableViewContainer.frame.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.viewDrawableViewContainer.frame.size);
[self.viewDrawableViewContainer.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
我知道这可能是由cpu引起的,它等于ipad2,但需要大约1秒钟.用户绘制或添加的越多,渲染所需的时间就越长.有时长达5秒,这是非常不可接受的.那么有什么选择来提高性能吗?有可能设置较小的渲染质量 - 我不需要在最高视网膜分辨率下渲染......
我将不胜感激任何帮助!提前致谢
Ipad1只能支持2048x2048,所以我想知道ipad视网膜支持更大尺寸的纹理.我用的是cocos2d v1.01
似乎在 iPhone 6+ 和 iPad 3(到目前为止我测试过的设备会重现问题)上,当页面放大时滚动 div 存在问题。
当第一次加载具有以下基本内容的页面时,div 滚动没有问题。
再生产
这个问题可能有点不一致,有时在放大并围绕滚动触摸/移动/缩放页面时会起作用,但不可靠。只有缩小才能重置它,以便 div 可以一致地滚动而不会出现问题。
这似乎无法在 iPhone 6+、iPad 3、iPhone 4(Chrome 和 Safari)以及几款 Android 手机 (Chrome) 上使用 Chrome 重现。
有人遇到过这个问题和/或知道如何解决吗?或者我错过了什么?
任何信息或帮助表示赞赏。
#outer {
border: 1px solid #000;
width: 100px;
height: 100px;
overflow: auto;
/*
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
*/
}
#inner {
width: 100px;
background-color: cornflowerblue;
}
p { margin: 0; }Run Code Online (Sandbox Code Playgroud)
<div id="outer">
<div id="inner">
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p> …Run Code Online (Sandbox Code Playgroud)