斯坦福大学公开课 iOS应用开发教程学习笔记(第七课)UIToolbar、iPad 和iPhone的通用程序
2015-10-27 16:41
736 查看
第七课的主要内容:UIToolbar、iPad 和iPhone的通用程序
他们通常在屏幕的顶部或底部,一个工具栏九四UIBarBUttonItem的集合,行为像button,不是按钮。
他们有target action。可以设置文字,图片等。flexible,fixed。
这节课的Demo是把UIToolbar拖放到iPad的故事版的顶部来使用。
UISplitViewController只能在iPad的storyboard使用。
基本的UI元素,填充整个屏幕。
有两个ViewController,一个左侧Master,一个右侧Detail 。
//copy,因为不希望你传递连个ViewController的可变数组,所以复制。
SpliteView设置delegate,主要任务处理旋转。
assign和weak类似,不做零处理。如果assign从堆上释放,得到野指针。
Showing and Hiding View Controllers
– splitViewController:shouldHideViewController:inOrientation:
-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
– splitViewController:willShowViewController:invalidatingBarButtonItem:
– splitViewController:popoverController:willPresentViewController:
这几个代理方法会用到。
总是隐藏左边的部分
处理bar button Item
bar button go away
当master改变后,detail如何更新?
通过Target/Action or segue
产生一个segue
同样也可以code产生popover
or
不要忘记keep一个strong pointer to the popover Controller
Popover消失
BOOL iPad = (UI_USER_INTERFACE_IDIOM() == UIInterfaceIdiomPad);
当前的界面多大?
主要使用两个mainStoryBoard分别处理,iPhone和iPad的显示,具体实现,略。
spring&structs的适配问题。
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的适配问题。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- Objective-C的内省(Introspection)用法小结
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音