我想了解ios设备的视口元标记。 我创build了一个testing页面,在这里我插入了一个862px宽的图像。 所以我有视口元标记为: <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale: .5, maximum-scale: 5.0"> 然而在ipad 3上,分辨率宽度为1536像素,并将视口设置为等量的ipad 3的可见区域,862px图像被炸开,宽度略大于可见区域。 所以我必须水平滚动才能看到图像的其余部分。 这使得我认为设备宽度返回768像素,并且为862像素图像占据水平滚动的额外的一点点。 为什么这样做? 是否有某种像素密度我必须考虑? UPDATE 我已经尝试将宽度设置为数字宽度,图像的相同确切宽度(在本例中为“862”)。 因此,网页是862X206,与图像相同,但它的宽度与设备宽度相同。 更新2 我创build了一个非常简单的页面,出于某种原因,一个带有862像素视口的空白页面导致我的iPad 3上的水平和垂直滚动,代码如下: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=862, initial-scale=1.0"> </head> <body style="width:100%; padding:0; margin:0"> </body> </html> 这种滚动导致视口不适合可视区域或屏幕大小。 我不明白。 任何有识之士将不胜感激。 谢谢。 **注意**我忘了添加一个填充和边距重置为0,它是增加8px的边距。 更新3 好吧,原来,我认为设备宽度将返回的iPad 3的1536像素的分辨率宽度。显然,它返回768像素的屏幕大小。 任何超过768的视口宽度,让我滚动的iPad 3.为什么? 如果你有一个1024像素的页面,并且想把它放到iPad 3的可见区域,那么你将宽度设置为1024,初始缩放为1,不应该使1024像素的视口适合可视区域? 解 好的,如果你想让每个设备都知道如何扩展你的页面,你所做的就是忽略初始规模。 所以,如果我只设置宽度,使用设备宽度或数字值,并省略了初始缩放,它会自动为您计算缩放。 它只是工作。 […]
我正在尝试从用户可以在其上绘制的视图中获取图像,或者添加其他视图。 随着iPad1和2一切工作正常。 但在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(); 我知道这可能是由与ipad2相同的cpu引起的,但大约需要1秒。 用户绘制或添加的越多,渲染所需的时间就越长。 有时长达5秒,这是真的不能接受的。 那么有什么方法可以提高性能吗? 任何机会,可能会设置一个较小的渲染质量 – 我不需要在最高的视网膜分辨率渲染… 我将不胜感激任何帮助! 提前致谢
我有一个实现徒手绘制的视图,但是我有一个小问题。 我注意到在iPad 3上,所有的东西都变成了地狱,所以我试图更新我的绘图代码(可能是我应该做的第一个地方),只更新被抚摸的部分。 然而,打开后的第一次冲程,以及闲置约10秒后的第一次冲程非常缓慢。 在所有事情都“热身”之后,它就像黄油一样平滑,每个drawRect只需要大约0.15ms。 我不知道为什么,但整个视图矩形被标记为第一个drawRect脏,第一个drawRect后空闲(然后它需要约150毫秒更新)。 堆栈跟踪显示我的矩形被CABackingStoreUpdate_覆盖 如果矩形很大,我试图不绘制图层,但是随后我的整个上下文变为空白(当我在旧区域上绘制像乐透彩票票时,会再次出现)。 有没有人有任何想法与UIGraphicsGetCurrentContext()? 这是我能想象到的唯一的麻烦。 也就是说,我的观点背景被上下文精灵拉下来了,所以需要重新充实自己。 有什么设置我可以用来坚持相同的上下文吗? 或者还有其他的东西在这里…在初始显示之后没有必要更新完整的矩形。 我的drawRect非常简单: – (void)drawRect:(CGRect)rect { CGContextRef c = mDrawingLayer ? CGLayerGetContext(mDrawingLayer) : NULL; if(!mDrawingLayer) { c = UIGraphicsGetCurrentContext(); mDrawingLayer = CGLayerCreateWithContext(c, self.bounds.size, NULL); c = CGLayerGetContext(mDrawingLayer); CGContextSetAllowsAntialiasing(c, true); CGContextSetShouldAntialias(c, true); CGContextSetLineCap(c, kCGLineCapRound); CGContextSetLineJoin(c, kCGLineJoinRound); } if(mClearFlag) { CGContextClearRect(c, self.bounds); mClearFlag = NO; } […]
看来,在iPhone 6 +和iPad 3(我已经testing到目前为止重现问题的设备),页面放大时滚动div有一个问题。 当第一次加载下面的基本内容的页面,div没有问题滚动。 再生产 缩放页面,使得缩放比例大于1.0。 这似乎更经常地“禁用”滚动div的完全或大部分。 页面本身卷动或“反弹”。 缩小到1.0的比例,它再次滚动。 这个问题可能会有点不一致,有时当放大和周围的滚动触摸/移动/缩放页面将工作一点点,但不可靠。 只有缩小似乎重置它,以便div可以滚动一致没有问题。 Chrome 6+,iPad 3,iPhone 4(包括Chrome和Safari)以及多款Android手机(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; } <div id="outer"> <div id="inner"> <p>test</p> […]
我一直在开发一个graphics密集型的iPad应用程序。 我已经能够在iPad 2上挤出相当多的性能了,但是新iPad的@ 2xgraphics在内存部门打了很多拳头。 在乐器中使用活动监视器我可以看到我的应用程序的大小在300MB-400MB范围内,但是我没有收到任何低内存通知。 我正在使用一个UINavigationController来pipe理我的视图,所以进入堆栈会对内存产生累积效应,最后终止。 我没有遇到这个问题在iPad 2上,我收到低预期的内存通知。 我的应用程序已被编码,以尽可能清理,并在该设备上performance非常好。 我已经阅读了一些类似的问题问: iOS应用程序因内存不足而死亡,但未收到内存警告 iPhone应用程序使用150 MB的内存,仍然没有低内存警告! 没有任何build议似乎有帮助。 我已经插入代码来强制发送一个低内存通知: [[UIApplication sharedApplication] _performMemoryWarning]; 这会导致非活动视图按预期的方式卸载,并将内存消耗恢复到正常状态。 这使用一个私人的API,是黑客,所以出于实际的原因是不是一个解决scheme。 如何让我的设备正确响应低内存条件,让我的应用程序知道它需要清理?