iPad开发 UIPopoverController 01

iphone 6   1134 * 750  4.7英寸

iphone6Plus   1080 *1920 5.5英寸

ipad 和 ipad mini 是不需要做适配的。 (相当于等比例的缩放)

iphone  与 iPad 最大区别就是横竖屏适配。官方建议:ipad 同时支持横竖屏。

 

屏幕的尺寸 \分辨率

注意上面 ipad 的点都是768 * 1024

区别:

1. iPad的虚拟键盘多了个退出键盘的按钮

2.ipad 特有的API

其中 UIPopoverController 用的比较多。

3.同有API的差异

4.屏幕支持方向

iphone 支持三个方向 iPad支持4个方向。

一般情况下,iPhone应用就一种屏幕方向,要么竖屏,要么横屏(游戏)

其次,苹果官方建议:iPad应用最好同时支持横屏、竖屏两种方向。

 

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

使用Xcode6 细节点:

Xcode6  没有前缀的概念了, 因为是为了swift 准备的,swift有C++的那种命名空间的概率。如果使用XCode  还想使用前缀,可以这样处理,如下图:

1.最右边 Class prefix 的位置可以输入你需要命名的前缀, 然后回车,这样你在创建别的类等的时候,就会添加上前缀。

2.ipad 使用启动的时候,默认加载的是LaunchScreen.xib上的内容,在这上面可以添加东西,或者添加 加载的图片,和iPhone 一样 修改这个地方:

 

strong weak

strong为强引用  weak 为弱应用, 当被弱引用修饰的为nil 时会制动回收,但是ioS有了一种处理,UIPopoverController不会crash,ios7 处理这种的方式是 加一个属性(strong),让这个值赋值给属性声明的值,这样就不会crash 被dealloc 回收了。既为:self.popover = popover ,其中self.popover为自己声明的属性。

      

 

                    什么是UIPopoverController

是iPad开发中常见的一种控制器(在iPhone上不允许使用)

跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController

它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面

使用步骤

要想显示一个UIPopoverController,需要经过下列步骤

设置内容控制器

由于UIPopoverController直接继承自NSObject,不具备可视化的能力

因此UIPopoverController上面的内容必须由另外一个继承自UIViewController的控制器来提供,这个控制器称为“内容控制器”

 

设置内容的尺寸

显示出来占据多少屏幕空间

 

设置显示的位置

从哪个地方冒出来

 

设置内容控制器

设置内容控制器有3种方法

在初始化UIPopoverController的时候传入一个内容控制器

- (id)initWithContentViewController:(UIViewController *)viewController;

 

@property (nonatomic, retain) UIViewController *contentViewController;

 

- (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated;

 

以上方法和属性都是UIPopoverController的

 

设置内容的尺寸

设置内容的尺寸有2种方法

@property (nonatomic) CGSize popoverContentSize;

 

- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated;

 

以上方法和属性都是UIPopoverController的

 

设置显示的位置

 

设置显示的位置有2种方法

围绕着一个UIBarButtonItem显示(箭头指定那个UIBarButtonItem)

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;

item :围绕着哪个UIBarButtonItem显示

arrowDirections :箭头的方向

animated :是否通过动画显示出来

 

围绕着某一块特定区域显示(箭头指定那块特定区域)

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;

rect :指定箭头所指区域的矩形框范围(位置和尺寸)

view :rect参数是以view的左上角为坐标原点(0,0)

arrowDirections :箭头的方向

animated :是否通过动画显示出来

 

 

 

如果想让箭头指向某一个UIView的做法有2种做法,比如指向一个button

方法1

[popover presentPopoverFromRect:button.bounds inView:button permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

 

方法2

[popover presentPopoverFromRect:button.frame inView:button.superview permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

 

例子:

为导航栏上的点击按钮的响应方法

//弹出popover菜单

- (IBAction)popButtonAction:(id)sender {

    //创建一个UIPopover 注意继承NSObject

    //1. 显示的内容

    Menu *menu = [[Menu alloc] init];

    //2. 创建UIPopoverController

    UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:menu];

    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navi];

    //3. 设置尺寸大小

    popover.popoverContentSize = CGSizeMake(320, 320);

    //4. 从哪里显示出来 指向点击的按钮

    [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

}

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

 

posted @ 2015-05-20 10:02  平凡得脚步  阅读(237)  评论(0编辑  收藏  举报