0421 iPad 分频控制器/UISplitViewController
1. 屏幕
![](https://app.yinxiang.com/shard/s21/res/b18dfb5d-b8ed-4c9e-8a98-aceb051aa744.png)
2. 创建单一视图项目,底下选中iPad(也可以在项目里面改)
![](https://app.yinxiang.com/shard/s21/res/839494f1-ec9d-4498-aef2-39ae3c2df773.png)
3. 创建左右控制器
![](https://app.yinxiang.com/shard/s21/res/fef97533-7589-4b86-ace1-19090be570f0.png)
分割视图:
![](https://app.yinxiang.com/shard/s21/res/178875c6-4810-49aa-93ff-b2056e08d465.png)
// 左边是分组的tableView
放倒屏幕 command + 方向
代码:
1. 创建split
2. 左右,左右一般会用导航控制器来控制.
![](https://app.yinxiang.com/shard/s21/res/442506c9-5c0b-4d39-aea3-f76304c8274d.png)
// 3. 设置根视图控制器
self.window.rootViewController = split;
横状态屏才可以看到,左右的分割视图效果.
4. 下面把导航控制器,套在导航控制器里.
// 今天的效果,左侧是书签,右侧是浏览器.
左右控制器是平行了,不是正向传值和反向传值.
a 和 b 同时存在, 左边点击,右边显示.
5. 弄一个字典NSDictionary *bookMarks;
![](https://app.yinxiang.com/shard/s21/res/84e3ac22-e130-4ab8-9e4a-d9842eb5f5d4.png)
// 注意别忘了前缀,否则加载不出来的!
6. 有多少个键值对,就有多少行.
7. cell的内容需要通过key值取.
8. 实例化webView
右边webView , 是scrollView .
9. 默认给它一个url
loadRequest方法, 需要一个NSURLRequest对象, 则就需要一个url
10. 通知中心
一定只能从userInfo里面取信息, 不要从Object是发送对象,表示只接受它发来的,其他人的都不接受.
11. 记得析构函数,移除通知.
// 删除所有 removeObserver:self
// 或移除指定的 name: @“newURL” object: nil
1. 默认情况下,竖屏不显示左边控制器.
下面处理竖屏的时候,也显示左边的tableView.
split的代理:
// 注: UISplitViewController的实例化和代理方法,都在AppDelegate中写.
![](https://app.yinxiang.com/shard/s21/res/5d77dd5f-b6ec-4e64-96c8-193c8952216d.png)
![](https://app.yinxiang.com/shard/s21/res/15a820a1-a95b-42e0-b4fd-04c6d419704c.png)
// 控制竖屏的时候,是否显示左边的控制器.
![](https://app.yinxiang.com/shard/s21/res/20935949-4040-486f-86f4-fb50d48db34b.png)
或者用系统的宏,效果是一样的:
![](https://app.yinxiang.com/shard/s21/res/60b3fc2b-fb2c-4e59-be6e-bb61af9d47b4.png)
效果如下:
![](https://app.yinxiang.com/shard/s21/res/8ad5f4bb-6e92-4a69-97d9-cbf6117e85a0.png)
2. 倒屏的效果,有点丑:
// 现在要做的是,autoResizing,让其上下左右贴近父视图.
// 兄弟视图是autoLayout
// 下图是倒过来的样子(即Home键在最顶上)
![](https://app.yinxiang.com/shard/s21/res/b469ae88-46fe-48a9-be23-a52949cd120f.png)
![](https://app.yinxiang.com/shard/s21/res/772b6a15-2293-4c71-b37b-21d0f739cd00.png)
代码:
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
注意:
||(短路或)和 |(或)都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。// | 和 || 区别
修改后:
![](https://app.yinxiang.com/shard/s21/res/f6dfec23-fdd5-432d-ab87-eb804e14b63c.png)
3. 现在想要的效果,拉伸后也要看到左边的标签.
-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc{
barButtonItem.title = @"显示";
right.navigationItem.leftBarButtonItem = barButtonItem;
barButtonItem.title = @"显示";
right.navigationItem.leftBarButtonItem = barButtonItem;
}
效果: 1) // “显示”按钮 , 点击会显示左侧按钮
![](https://app.yinxiang.com/shard/s21/res/8204a634-a8f2-415d-a7ab-1edd53aa86fa.png)
2) 弹出菜单 // 记住设代理
// 点击”显示”弹出来,点击其他任何地方,收起.
系统已经帮我们把这些功能都实现好了.
![](https://app.yinxiang.com/shard/s21/res/d89538cb-932a-4043-ab1a-77fc58944733.png)
![](https://app.yinxiang.com/shard/s21/res/62872596-6b69-4829-b512-c0923d4469e3.png)