iOS模拟器分辨率的问题(转载)

转载地址:http://justsee.iteye.com/blog/2123545

不积跬步 无以至千里 不积小流 无以成江海

ios8/sdk8/xcode6/iphone6(+)适配

博客分类:

AppIcon

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1

Table 39-1Size (in pixels) of custom icons and images

Asset

iPhone 6 Plus (@3x)

iPhone 6 and iPhone 5 (@2x)

iPhone 4s (@2x)

iPad and iPad mini (@2x)

iPad 2 and iPad mini (@1x)


App icon (required for all apps)


180 x 180


120 x 120


120 x 120


152 x 152


76 x 76


App icon for the App Store (required for all apps)


1024 x 1024


1024 x 1024


1024 x 1024


1024 x 1024


1024 x 1024


Launch file or image (required for all apps)


Use a launch file (seeLaunch Images)


For iPhone 6, use a launch file (see Launch Images)

For iPhone 5, 640 x 1136


640 x 960


1536 x 2048 (portrait)

2048 x 1536 (landscape)


768 x 1024 (portrait)

1024 x 768 (landscape)


Spotlight search results icon (recommended)


120 x 120


80 x 80


80 x 80


80 x 80


40 x 40


Settings icon (recommended)


87 x 87


58 x 58


58 x 58


58 x 58


29 x 29


Toolbar and navigation bar icon (optional)


About 66 x 66


About 44 x 44


About 44 x 44


About 44 x 44


About 22 x 22


Tab bar icon (optional)


About 75 x 75 (maximum: 144 x 96)


About 50 x 50 (maximum: 96 x 64)


About 50 x 50 (maximum: 96 x 64)


About 50 x 50 (maximum: 96 x 64)


About 25 x 25 (maximum: 48 x 32)


Default Newsstand cover icon for the App Store (required for Newsstand apps)


At least 1024 pixels on the longest edge


At least 1024 pixels on the longest edge


At least 1024 pixels on the longest edge


At least 1024 pixels on the longest edge


At least 512 pixels on the longest edge


Web clip icon (recommended for web apps and websites)


180 x 180


120 x 120


120 x 120


152 x 152


76 x 76

iphone6/6+ 更新:

[email protected]     87*87

[email protected]           120*120

[email protected]           180*180

Icon.png                        57*57

[email protected]                114*114

Icon-Small.png                29*29

[email protected]            58*58

Icon-Small-50.png            50*50

[email protected]        100*100

Icon-72.png                    72*72

[email protected]                144*144

Icon-40.png                    40*40

[email protected]                80*80

Icon-60.png                    60*60

[email protected]                120*120

Icon-76.png                    76*76

[email protected]                152*152

LaunchImage

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LaunchImages.html#//apple_ref/doc/uid/TP40006556-CH22-SW1

For iPhone 6

750 x 1334 (@2x) for portrait

1334 x 750 (@2x) for landscape

For iPhone 6 Plus:

1242 x 2208 (@3x) for portrait

2208 x 1242 (@3x) for landscape

---------------------------------------------------------------------

4.0 inch screen:

[email protected] (old 640x1136 ~ for iPhone 5)

4.0 inch screen:

[email protected] (new 640x1136 ~ for iPhone 5)

4.7 inch screen:

[email protected] (750x1334 ~ for iPhone 6)

5.5 inch screen:

[email protected] (1242x2208 ~ for iPhone 6 Plus Portrait)

5.5 inch screen:

[email protected] (2208x1242 ~ for iPhone 6 Plus Landscape)

Retina iPad:

[email protected]~ipad.png (1536x2048 ~ for Retina  iPad Portrait)

Retina iPad:

[email protected]~ipad.png (2048x1536 ~ for Retina  iPad Landscape)

iPad Mini/iPad:

Default-Portrait~ipad.png (768x1024 ~ for  iPad Portrait)

iPad Mini/iPad:

Default-Landscape~ipad.png (1024x768 ~ for  iPad Landscape)

适配iphone6/6+启动界面

如果旧的工程直接跑到这两个模拟器中时,默认是"兼容模式",即系统会简单的把内容等比例放大,显示效果有些模糊但尚可接受。此时App内部获取到的设备分辨率和iPhone5是一样的:320*568 point。

启用高分辨率模式有2个方法:

1.添加大屏的LaunchImage:

在Images.xcassets里,删除旧的LaunchImage组,然后新建LaunchImage组,添加对应高分辨率的图片。(参考:http://matthewpalmer.net/blog/2014/09/10/iphone-6-plus-launch-image-adaptive-mode/

2.添加Launch Screen File

Launch Screen是Xcode6和iOS8新加的功能,它用一个xib文件来作为启动画面。App在旧版iOS(低于ios8)启动时,该属性会被自动忽略,不会造成异常。

首先,点击New File ->iOS User Interface ->Launch Screen,然后在工程设置项里启用它:

LaunchFile


 不过这个xib不能关联任何的代码(不能自定义View的Class,不能IBOutlet,不能加Object),可以理解成这个xib就是一张截图,这个方案的好处在于可以使用到Size Classes来针对不同屏幕布局这个xib。

上面两处设置,只要启用任意一个即可让App进入高分辨率模式;但如果两处都没有设置,则App会回退到兼容模式。

两处都设定的话在ios8会走Launch Screen File,在低于ios8 走LaunchImage

PS:iPhone4、iPhone5、iPhone6这几个设备的ppi都是相同的,默认图片优先是@2x。iPhone6 Plus的像素密度更高,默认图片优先是@3x。 另外,iPhone6 Plus有一点和其他设备不同:在App内部获得的屏幕分辨率是1242*2208,但设备实际分辨率是1920*1080,这时系统会把整体的显示内容做一个缩放,downscale到1/1.15。

 UIPageControl的autoresizingMask

在设置UIPageControl实例的宽度时,显示的好像总是设置的四倍左右,但是把其他组建(UILable等)设置在同一父容器中显示的是正常的。头文件看到UIPageControl的autoresizingMask默认值是UIViewAutoresizingNone,但是感觉没起作用,于是这是下

Java代码  

  1. _mainPageControl.autoresizingMask = UIViewAutoresizingNone;

UIPageControl显示正确了。(apple的bug?)

UIActivityViewController crashing on iPads by sdk8

其老早在 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivityViewController_Class/ 中就说了:On iPad, you must present the view controller in a popover. On iPhone and iPod touch, you must present it modally

在sdk8之前你ipad还是用了presentViewController,那在dismissViewControllerAnimated的时候屏幕会旋转下,可能你还能接受,但是在sdk8便会直接crash,报错:

Java代码  

  1. 2014-10-15 14:03:25.927 BT2014[5133:488272] *** Terminating app due to uncaught exception ‘NSGenericException‘, reason: ‘UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x145578890>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.‘
  2. *** First throw call stack:
  3. (0x187d9e084 0x1986900e4 0x18cc56bf0 0x18c81e3f8 0x18c81cf30 0x18c5a2efc 0x18c5149c0 0x187d56388 0x187d53314 0x187d536f4 0x187c81664 0x190d7f5a4 0x18c5864f8 0x1000c574c 0x198cfea08)
  4. libc++abi.dylib: terminating with uncaught exception of type NSException

所以用sdk8编译时ipad用pop,并且用新类:UIPopoverPresentationController

UIActivityViewController

Java代码  

  1. Accessing the Completion Handler
  2. completionHandler
  3. (iOS 8.0)
  4. The completion handler to execute after the activity view controller is dismissed.
  5. Declaration
  6. OBJECTIVE-C
  7. @property(nonatomic, copy) UIActivityViewControllerCompletionHandler completionHandler
  8. Discussion
  9. When the user-selected service finishes operating on the data, or when the user dismisses the view controller, the view controller executes this completion handler to let your app know the final result of the operation.
  10. Import Statement
  11. Availability
  12. Available in iOS 6.0 and later.
  13. Deprecated in iOS 8.0.

"LaunchServices: invalidationHandler called" with UIActivityViewController iOS8

In iOS8 when I present or dismiss a UIActivityViewController, my app logs: "LaunchServices: invalidationHandler called"。

参考:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPopoverPresentationController_class/index.html

https://devforums.apple.com/message/1049415#1049415

http://stackoverflow.com/questions/25192313/sharing-via-uiactivityviewcontroller-to-twitter-facebook-etc-causing-crash

可能是苹果的issue

ios sdk8/ios8 remoteNotification

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在苹果UIApplication文件中说明:

@interface UIApplication (UIRemoteNotifications)

.

.

.

- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types NS_DEPRECATED_IOS(3_0, 8_0, "Please use registerForRemoteNotifications and registerUserNotificationSettings: instead");

// Returns the enabled types, also taking into account any systemwide settings; doesn‘t relate to connectivity.

- (UIRemoteNotificationType)enabledRemoteNotificationTypes NS_DEPRECATED_IOS(3_0, 8_0, "Please use -[UIApplication isRegisteredForRemoteNotifications], or -[UIApplication currentUserNotificationSettings] to retrieve user-enabled remote notification and user notification settings");

@end

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

所以在ios8中应该用的新的注册通知的代码:

C代码  

  1. // IOS8 新的注册api
  2. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
  3. {
  4. [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
  5. settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
  6. categories:nil]];
  7. [[UIApplication sharedApplication] registerForRemoteNotifications];
  8. }
  9. else
  10. {
  11. //原来注册通知的代码
  12. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
  13. (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
  14. }

原本在IOS7当中 判断push是否打开的方法是:

Java代码  

  1. UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
  2. return (types & UIRemoteNotificationTypeAlert);

如果将这段代码使用在 IOS8当中,虽然不会出现crash的现象,但永远返回空。 在IOS8中,我们使用如下的新代码来取代以上的代码:

Java代码  

  1. +(BOOL)enabledRemoteNotification{
  2. UIRemoteNotificationType types;
  3. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
  4. {
  5. types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
  6. }
  7. else
  8. {
  9. types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
  10. }
  11. return (types & UIRemoteNotificationTypeAlert);
  12. }

ios 8 - buttons in horizontal scroll view intercepting pan event - scroll does not work

含有uibutton的ScrollView在iOS8中无法滚动的解决办法:

Java代码  

  1. theScrollView.panGestureRecognizer.delaysTouchesBegan = theScrollView.delaysContentTouches

IBInspectable / IBDesignable

http://justsee.iteye.com/admin/blogs/2236938

UIScreen(view.frame)

http://justsee.iteye.com/blog/2154757

iOS8 notification

http://justsee.iteye.com/blog/2144285

分享到:  

iOS App Launch Option | 一张图帮你看懂 iPhone 6 Plus 的屏幕分辨 ...

评论
发表评论

您还没有登录,请您登录后再发表评论

啸笑天

  • 浏览: 1407278 次
  • 性别: 
  • 来自: China
最近访客 更多访客>>

sugar005

wangdaijun_001

zhujingguang

u010214413

文章分类
社区版块
存档分类
评论排行榜
最新评论

声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。
© 2003-2015 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ]

时间: 2025-01-01 17:52:20

iOS模拟器分辨率的问题(转载)的相关文章

上手iOS常见问题——iOS模拟器显示错位问题解决

由于刚刚开始学习iOS开发,所以其中肯定会碰到很多问题,也可能是大家也遇到的问题.我也会在自己的学习过程中碰到的问题和解决方案写出来,与大家一起分享.本篇博客要解决的问题是iOS模拟器的显示与Main.storyboard中布局不一致或者说错误的问题. (1)新建一个iOS Application项目,右侧选择Single View Application.点击Next,项目名称任意,下面的Devices选择iPhone,然后创建成功. (2)然后在Main.storyboard中进行界面设计,

ios模拟器快捷键操作

搜集资料: 1.虚拟机中iphone模拟器的旋转,以及iphone学习文档——快捷键: http://blog.sina.com.cn/s/blog_5d5a561b0100sef3.html 2.[整理]Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得:http://www.crifan.com/intro_ios_simulator_in_xcode_and_usage_summary/

玩玩iOS模拟器

这篇文章主要来介绍iOS模拟器的几个有趣的小功能. iOS模拟器,顾名思义就是模拟iOS设备.对于苦逼的程序猿来说,一个iOS模拟器大部分时候可以顶的上十几台真机. 打开Xcode,在菜单里选择“Xcode->Open Developer Tool->iOS Simulator”打开模拟器.或者可以新建了一个Single View的项目,直接运行程序,模拟器会自动打开. 图1. iOS模拟器 选中模拟器,看它的菜单栏“Hardware”,里面有好几个项目,这篇文章主要就是讲这些东西. Devi

IOS模拟器调试ANE

来源:http://www.tuicool.com/articles/AFRJzi 利用iOS模拟器来检测和调试AIR应用程序补充篇 Air3.4来了 除去可以直接往模拟器里面部署应用,还可以往真机里面部署应用. Air3.3的时候非常苦逼,你只能往模拟器里面装应用而不能删除,到了Air3.4以后不但可以安装,还可以删除,这说明,直接用Xcode 自带的ios模拟器调试air程序的时代正式来临了. 作者  黄晋威 其实这篇文章算是这篇文章的补充: http://www.adobe.com/cn/

在IOS 模拟器种输入中文

模拟器默认的配置种没有"小地球",只能输入英文.加入中文方法如下: 选择Settings--->General-->Keyboard-->International KeyBoards-->Add New Keyboard-->Chinese Simplified(PinYin) 即我们一般用的简体中文拼音输入法,配置好后,再输入文字时,点击弹出键盘上的"小地球"就可以输入中文了. 在IOS 模拟器种输入中文,布布扣,bubuko.co

appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器

前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了. 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appium版本号1.6.4(appium-desktop1.1.0) 4.ios模拟器版本号10.3 一.OS10.12 1.这里Mac上的OS系统一定要升级到10.12,低于10.12是无法安装8.3.2的xcode版本的 2.下载地址:https://www.apple.com/macos/sierra

给iOS 模拟器“安装”app文件

前言 刚刚接触iOS的时候,我就一直很好奇,模拟器上面能不能直接安装app呢?如果可以,我们就直接在模拟器上面聊QQ和微信了.直到昨天和朋友们聊到了这个话题,没有想到还真的可以给模拟器“安装”app! 一.应用场景 先来谈谈是什么情况下,会有在模拟器上安装app的需求. 在一个大公司里,对源码的管理有严格的制度,非开发人员是没有权限接触到源码的.对苹果的开发证书管理也非常严格,甚至连开发人员也没有发布证书,证书只在持续集成环境或者Appstore产线里面,或者只在最后打包上架的人手上. 那么现在

ios基础-分辨率适配

(一)分辨率定义 分辨率,是指单位长度内包含的像素点的数量,它的单位通常为像素/英寸(ppi).描述分辨率的单位有:(dpi点每英寸).lpi(线每英寸)和ppi(像素每英寸). (二)ios分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 (1)iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 普通Retina分辨率 640像素 x 960像素 iphone5的屏幕分辨率:640像素 x 1136像素 (2)iPad 普屏

iOS 模拟器“安装”app

1.首先在模拟器上运行我们的app程序 2.执行以下命令: ditto -ck --sequesterRsrc --keepParent `ls -1 -d -t ~/Library/Developer/Xcode/DerivedData/*/Build/Products/*-iphonesimulator/*.app | head -n 1` /Users/czc/Desktop/app.zip (1)上面命令最后一个路径(/Users/YDZ/Desktop/app.zip)是文件压缩包输出