斯坦福大学公开课 iOS应用开发教程学习笔记(第七课)UIToolbar、iPad 和iPhone的通用程序

第七课的主要内容:UIToolbar、iPad 和iPhone的通用程序

1、UIToolbar上面放的都是UIBarButtonItem

他们通常在屏幕的顶部或底部,一个工具栏九四UIBarBUttonItem的集合,行为像button,不是按钮。
他们有target action。可以设置文字,图片等。flexible,fixed。

这节课的Demo是把UIToolbar拖放到iPad的故事版的顶部来使用。


2、UISplitViewController

UISplitViewController只能在iPad的storyboard使用。
基本的UI元素,填充整个屏幕。
有两个ViewController,一个左侧Master,一个右侧Detail 。
@property(nonatomic,copy)NSArray *viewController;//两个,0是左边的,1是右边的
//copy,因为不希望你传递连个ViewController的可变数组,所以复制。
SpliteView设置delegate,主要任务处理旋转。
@property(nonatomic,assign) id <UISplitViewControllerDelegate> delegate;
assign和weak类似,不做零处理。如果assign从堆上释放,得到野指针。

3、UISplitViewControllerDelegate

Showing and Hiding View Controllers

– splitViewController:shouldHideViewController:inOrientation:
-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
– splitViewController:willShowViewController:invalidatingBarButtonItem:
– splitViewController:popoverController:willPresentViewController:

这几个代理方法会用到。

总是隐藏左边的部分
-(BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation{
          return YES;//总是隐藏
                           //NO从不隐藏
          return UIInterfaceOrientationIsPortrait(orientation);//default  potrait隐藏
}

处理bar button Item
-(BOOL)splitViewController:(UISplitViewController *)sender willHideViewController:(UIViewController *)master withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popover{
         barButtonItem.title = @“master”;
         [detailViewController  setSplitViewControllerBarButtonItem:barButtonItem];
}

bar button go away
-(BOOL)splitViewController:(UISplitViewController *)sender willShowViewController:(UIViewController *)master invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
         [detailViewController  removeSplitViewControllerBarButtonItem:nil];
}

setSplitViewControllerBarButtonItem:(UIBarButtonItem *)barButtonItem{
     UIToolbar *toolbar = [self toolbar];
     NSMutableArray *toolbarItem = [toolbar.items mutableCopy];
     …..
}

当master改变后,detail如何更新?
通过Target/Action or segue


4、Popover

UIPopoverController类,不是ViewController,只是一个NSobject,控制viewController
产生一个segue
同样也可以code产生popover
-(void)presentPopoverFromRect:(CGRect)aRect or
                                           inView:(UIView *)view
            permittedArrowDirections:(UIPopoverArrowDirection)direction
                                      animated:(BOOL)flag; 

or
-(void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)barButtonItem 
            permittedArrowDirections:(UIPopoverArrowDirection)direction
                                      animated:(BOOL)flag; 

不要忘记keep一个strong pointer to the popover Controller

Popover消失
-(void)dismissPopoverAnimated:(BOOL)animated;

5 Universal Applications

怎样知道我是在一个iPad上?
BOOL iPad = (UI_USER_INTERFACE_IDIOM() == UIInterfaceIdiomPad);
  
当前的界面多大?
CGRect screenBounds = [[UIScreen mainScreen] bounds];

6 Demo

把Psychologist变成一个通用APP
主要使用两个mainStoryBoard分别处理,iPhone和iPad的显示,具体实现,略。
spring&structs的适配问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值