您的位置:首页 > 产品设计 > UI/UE

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

2015-10-27 16:41 736 查看
第七课的主要内容: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的适配问题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息