我的代码适用于普通设备,但在视网膜设备上会产生模糊图像.
有人知道我的问题的解决方案吗?
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
Run Code Online (Sandbox Code Playgroud) 我知道目前iPhone/iPad顶部的状态栏(带有时间,电池和网络连接)对于非视网膜屏幕是20像素,对于视网膜屏幕是40像素,但是为了将来证明我的应用程序我想要能够在没有硬编码值的情况下确定这一点.是否可以通过编程方式计算出状态栏的高度?
iOS SDK是否提供了一种简单的方法来检查currentDevice是否具有高分辨率显示器(视网膜)?
我发现现在最好的方法是:
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] == YES && [[UIScreen mainScreen] scale] == 2.00) {
// RETINA DISPLAY
}
Run Code Online (Sandbox Code Playgroud) 使用具有视网膜显示屏的新款Apple MacBook Pro,如果您在网站上提供"标准"图像,则会有点模糊.所以你必须提供视网膜图像.
有没有办法自动切换到@2x图像,如iOS(使用Objective-C)吗?我发现的是:移动和视网膜显示器上的高分辨率图像的CSS,但我希望我能找到所有图像的自动过程,没有CSS或JavaScript.
可能吗?
更新
我会强调@Paul D. Waite提出的这篇有趣的文章以及塞巴斯蒂安关于它的有趣讨论.
有没有办法模拟Windows上的Retina显示屏来测试网站的HiDPI显示器,如Retina?
我在一台标准的24英寸1920x1080显示器上运行Windows.昨晚我在朋友全新的15英寸Retina MacBook Pro上查看了我的网站,图形显得模糊(远比普通的15英寸MacBook差),而字体是超级清晰锐利,由于直接比较,使徽标显得更加糟糕.
我已按照本教程使我的网站Retina准备好了:
http://line25.com/tutorials/how-to-create-retina-graphics-for-your-web-designs
我使用了retina.js方法,因为我没有任何背景图像.
我有什么方法可以测试它是否真的有用吗?显然我可以让我的朋友使用他的Retina笔记本,但这对我来说不是一个可行的工作流程.我希望能够在我自己的环境中至少大致测试网站的Retina兼容性.
如何在非视网膜显示器上模拟Mac OS X 10.8 Mountain Lion中的视网膜显示(HiDPI模式)?
我编写了一个用于视网膜显示的网页.我目前没有视网膜显示屏.
是否有任何模拟器应用程序或工具来测试网页的视网膜显示?
或者,是否有与Apple的视网膜显示器类似的显示器(不是Apple的MacBook或iPad)?
提前致谢.
我们有许多iOS应用程序,有几个不同的开发人员参与其中.我不断注意到的一个问题是,我们的故事板中的视图将移出它们放置的位置或调整大小以使它们更小,在标签尺寸适合文本的标签上最初变得非常明显突然间正在截断他们的文字.
当开发人员没有直接对故事板进行任何编辑时,我注意到我们的视图的这些降级出现在我们的Git存储库的提交中.他们可能已经在Interface Builder中查看了故事板,但没有对故事板进行任何真正的更改.然而,这些变化与他们正在进行的工作一起得到了保存和承诺.
当我在负责提交之前和之后进行故事板文件之间的文本比较时,我看到对视图帧的小改动,例如:
<rect key="frame" x="203" y="8" width="362" height="29"/>
|
V
<rect key="frame" x="203" y="7.5" width="362" height="29"/>
Run Code Online (Sandbox Code Playgroud)
和
<rect key="frame" x="446.00000170260091" y="7" width="302" height="30"/>
|
V
<rect key="frame" x="446" y="7" width="302" height="30"/>
Run Code Online (Sandbox Code Playgroud)
和
<rect key="frame" x="364" y="3" width="200" height="38"/>
|
V
<rect key="frame" x="363" y="3" width="200" height="38"/>
Run Code Online (Sandbox Code Playgroud)
和
<rect key="frame" x="284" y="7" width="97" height="30"/>
| |
V V
<rect key="frame" x="283" y="7" width="96" height="30"/>
Run Code Online (Sandbox Code Playgroud)
和
<rect key="frame" x="384.00001078580522" y="7" width="101" height="30"/>
| |
V V
<rect key="frame" x="383.00000530853856" y="7" …Run Code Online (Sandbox Code Playgroud) 现在我正在使用这个:
function is_retina_device() {
return window.devicePixelRatio > 1;
}
Run Code Online (Sandbox Code Playgroud)
但它的简单性让我感到害怕.有更彻底的检查吗?