AppIcon
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1
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+ 更新:
Icon-Small@3x.png 87*87
Icon-40@3x.png 120*120
Icon-60@3x.png 180*180
Icon.png 57*57
Icon@2x.png 114*114
Icon-Small.png 29*29
Icon-Small@2x.png 58*58
Icon-Small-50.png 50*50
Icon-Small-50@2x.png 100*100
Icon-72.png 72*72
Icon-72@2x.png 144*144
Icon-40.png 40*40
Icon-40@2x.png 80*80
Icon-60.png 60*60
Icon-60@2x.png 120*120
Icon-76.png 76*76
Icon-76@2x.png 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:
Default-568h@2x.png (old 640x1136 ~ for iPhone 5)
4.0 inch screen:
LaunchImage-700-568h@2x.png (new 640x1136 ~ for iPhone 5)
4.7 inch screen:
LaunchImage-800-667h@2x.png (750x1334 ~ for iPhone 6)
5.5 inch screen:
LaunchImage-800-Portrait-736h@3x.png (1242x2208 ~ for iPhone 6 Plus Portrait)
5.5 inch screen:
LaunchImage-800-Landscape-736h@3x.png (2208x1242 ~ for iPhone 6 Plus Landscape)
Retina iPad:
Default-Portrait@2x~ipad.png (1536x2048 ~ for Retina iPad Portrait)
Retina iPad:
Default-Landscape@2x~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代码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代码
UIActivityViewController
Java代码
"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代码原本在IOS7当中 判断push是否打开的方法是:
Java代码
如果将这段代码使用在 IOS8当中,虽然不会出现crash的现象,但永远返回空。 在IOS8中,我们使用如下的新代码来取代以上的代码:
Java代码
ios 8 - buttons in horizontal scroll view intercepting pan event - scroll does not work
含有uibutton的ScrollView在iOS8中无法滚动的解决办法:
Java代码
Size (in pixels) of custom icons and images