1 因为iPad的universal只有一个binary,所以没有的函数和类要weak link,而且不能用条件编译(因为只能编译成3.2)。
判断是iPad还是iPhone:
if
(
UI_USER_INTERFACE_IDIOM
()
==
UIUserInterfaceIdiomPad
)
{
NSLog
(
@
"
iPad
"
)
;
}
else
{
NSLog
(
@
"
iPhone
"
)
;
}
2 调试的时候,iPad模拟器只能认为是iPad,这时候,用3.2编译,然后选到3.0模拟器环境,别点build,直接点run。
3 popover创建的时候一定要这么写(即使放在if条件里)这个十分重要!否则iPhone调试会出错
SettingController
*
settingController
=
[[
SettingController
alloc
]
initWithNibName
:
nil
bundle
:
nil
]
;
if
(
UI_USER_INTERFACE_IDIOM
()
==
UIUserInterfaceIdiomPad
)
{
UINavigationController
*
setting_navigationController
=
[[
UINavigationController
alloc
]
initWithRootViewController
:
settingController
]
;
Class
popoverClass
=
NSClassFromString
(
@
"
UIPopoverController
"
)
;
if
(
popoverClass
)
{
UIPopoverController
*
popover
=
[[
popoverClass
alloc
]
initWithContentViewController
:
setting_navigationController
]
;
popover
.
delegate
=
self
;
[
popover
presentPopoverFromBarButtonItem
:
sender
permittedArrowDirections
:
UIPopoverArrowDirectionAny
animated
:
YES
]
;
}
[
setting_navigationController
release
]
;
}
else
{
[
self
.
navigationController
pushViewController
:
settingController
animated
:
YES
]
;
}
[
settingController
release
]
;
4 相关设置:
Base SDK = iphone device 3.2
Target Devise Family = iPhone/iPad
iPhone OS Deployment Target = iphone device 3.1.3
程序Target的iPhone OS Deployment Target的build setting必须设置为3.13或者更早(这样会带来程序的兼容性问题,比如不能用3.2SDK里面的API,也不能使用在3.2SDK里面被Deprecated的API)
5 3.2的时候可以接iPhone真机以Universal的形式调试。
6 将一个现有的iPhone程序升级到支持iPad的方法:
1)选择Prject–>The Upgrade Current Target for iPad
2)这里会有两个选项,升级为Universal或者创建一个单独的iPad target
7 iPad 至少支持一个方向的180度旋转。推荐支持4个方向。并提供横向与纵向的启动画面。
1)default图片根据ipad的方向来变换方向设置:
Filename Dimensions
Default-Portrait.png * 768w x 1004h
Default-PortraitUpsideDown.png 768w x 1004h
Default-Landscape.png ** 1024w x 748h
Default-LandscapeLeft.png 1024w x 748h
Default-LandscapeRight.png 1024w x 748h
Default.png Not recommended
2)旋转方向时reload view,重置控件大小:
-
(
void
)
didRotateFromInterfaceOrientation
:
(
UIInterfaceOrientation
)
fromInterfaceOrientation
{
UIImageView
*
logoView
=
(
UIImageView
*
)[
self
.
view
viewWithTag
:
LOGO_VIEW_TAG
]
;
logoView
.
frame
=
CGRectMake
((
self
.
view
.
frame
.
size
.
width
-
320
)
/
2
,
50
,
320
,
120
)
;
UITextView
*
textView
=
(
UITextView
*
)[
self
.
view
viewWithTag
:
TEXT_VIEW_TAG
]
;
textView
.
frame
=
CGRectMake
(
30.0
f
,
200.0
f
,
self
.
view
.
frame
.
size
.
width
-
60.0
f
,
380.0
f
)
;
}
再一次见证了不用IB的方便,还有控件的大小尽量不要用具体的数字,用self.view.frame.size.width,….代替.如:
table = [[UITableView alloc] initWithFrame:CGRectMake(0.0f,0.0f,self.view.frame.size.width,self.view.frame.size.height) style: UITableViewStyleGrouped];
8 关于ICON图标,准备3张图:72×72(MyLargeIcon.png),57×57(Icon.png),48×48(MySmallIcon.png)
updating…