当前位置:编程学习 > wap >>

IOS学习笔记(8)UIPageViewController UIProgressView 监听和响应键盘通知

使用UIPageViewController启用分页
新建程序:file--> new-->new project-->page-based Application模版-->next-->device Family (Universal)-->next-->create;
DataViewController 类 在页面视图控制器的每一个页面里都会提供这个类的一个实例给用户,这个类是UIViewController的一个子类。
ModelController 类 这仅仅是一个遵守UIPageViewControllerDataSource协议的一个NSObject的子类,这个类是页面视图控制器的数据资源类。
 
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished
previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed;
 
当用户从一个页面转向下一个或者前一个页面,或者当用户开始从一个页面转向另一个页面的途中后悔 了,并撤销返回到了之前的页面时,将会调用这个方法。假如成功跳转到另一个页面时,transitionCompleted 会被置成 YES,假如在跳转途中取消了跳转这个动作将会被置成 NO。
 
- (UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInte易做图ceOrientation:(UIInte易做图ceOrientation)orientation;
 
当设备的方向改变了将会调用这个方法。你可以使用这个方法通过返回 UIPageViewControllerSpinelocation 类型的一个值来设定页面主键的位置:
 
enum {
UIPageViewControllerSpineLocationNone = 0, UIPageViewControllerSpineLocationMin = 1, UIPageViewControllerSpineLocationMid = 2, UIPageViewControllerSpineLocationMax = 3
};
typedef NSInteger UIPageViewControllerSpineLocation;
 
这个可能对于你来说有点复杂,让我来给你演示一下。假如我们使用一个 UIpageViewControllerSpineLocationMin 值,页面视图将只会提供一个视图给用户,当转向另一个新页面时将提 供一个新页面给用户。但是,当我们给 UIPageViewControllerSpineLocationMid 设置书脊时,我们需要同时提 供两个视图。一个在左边一个在右边,中间放置一个书脊。你可以看到一个页面视图控制器在水平 模式下的例子,并设置了 UIpageViewControllerSpineLocationMin 的书脊。书脊被放置在两个视图控制器的中间。一旦用户将页面从右边翻向左边,这个页
 
面就停在了左边,而右边则显示一个新的视图控制器。整个逻辑关系都在下面的委托方法里,如下代码所示:
 
-(UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInte易做图ceOrientation:(UIInte易做图ceOrientation)orientation;
 
我们现在讲了页面控制器的委托,那数据资源优势怎么一回事呢?一个页面视图控制器的数据资源必须遵 守 UIPageViewControllerDataSource 协议。在协议里的两个很重要的方法是:
 
- (UIViewController *)
pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;
 
- (UIViewController *)
pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;
 
当页面视图控制器已经有一个视图控制器在屏幕里并需要知道下一个即将要显示的视图控制器时将调用第 一个方法。当用户决定翻转下一个页面时将发生此事件。当这个视图正在翻转的同时页面视图控制器想要判断 哪一个视图控制器需要显示的时候将调用第二个方法。
 
使用UIProgressView显示进度条
 
@property(monatomic,strong)UIProgressView *progressView;
 
@synthesize progressView;
 
-(void)viewDidLoad{
 
    [super viewDidLoad];
 
    self.view.backgroundColor = [UIColor whiteColor];
 
    self.progressView = [ [UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];
 
    self.progressView.center = self.view.center;
 
    self.progressView.progress = 0.5f;
 
    [self.view addSubview:self.progressView];
 
}
 
-(void)viewDidUnload{
 
    [super viewDidUnload];
 
    self.progressView = nil;
 
}
 
创建一个进度视图是很简单的,所需要注意的就是能够正确的显示进度,因为进度视图的progress属性值必须是在 +0到1.0之间,假设你有30个任务需要被监控,而且已经完成了20个任务,你需要指定下面的方程来表示进展程度:
 
self.progressView.progress = 20.0f/30.0f;
 
注:此处必须使用浮点数,若用整形 20/30为0;
 
监听和响应键盘通知
 
UIKeyboardWillShowNotification  //当键盘即将要显示的时候会发生这个通知,包含信息库。
 
UIKeyboardDidShowNotification //当键盘显示在屏幕上时将发出这个通知
 
UIKeyboardWillHideNotification  //当键盘将要从屏幕上移除时将会发出此通知。通知里包含了用户信息库,库里包含了各种关于键盘信息的详细信息,当键盘隐藏时动画,动画持续时间,等等。
 
UIKeyboardDidHideNotification  //当键盘完全隐藏后将发出此通知
 
UIKeyboardAnimationCurveUserInfoKey //指明了动画类型,用来显示和隐藏键盘,这个关键字包含了一个NSNumber类型的值,此类型包含了一个NSUInteger类型无符号整数
 
UIKeyboardAnimationDurationUserInfoKey //这个键值指明了键盘显示和隐藏的动画所用的时间,这个包含一个NSNumber类型的值,此类包含一个double类型的双字节值。
 
UIKeyboardFrameBeginUserInfoKey
 
这个键值指明了键盘在动画之前的框架。假如键盘将要显示时,在显示之前将这个框架传递给这个动 画。假如键盘已经显示了并即将要隐藏时,这个框架将会传递给这个隐藏动画,在键盘消失之前。这个键包含 了一个 CGRect 类型的值。
 
UIKeyboardFrameEndUserInfoKey
 
这个键值指明了动画完成后的键盘框架。假如键盘即将要显示时,这个框架将会在键盘完全显示后传 递给键盘。。假如键盘已经完全显示,而且将要隐藏时,在完全隐藏后这个框架将会传递给键盘。这个键值包 含了一个 CGRect 类型的值。使用UIPageViewController启用分页
新建程序:file--> new-->new project-->page-based Application模版-->next-->device Family (Universal)-->next-->create;
DataViewController 类 在页面视图控制器的每一个页面里都会提供这个类的一个实例给用户,这个类是UIViewController的一个子类。
ModelController 类 这仅仅是一个遵守UIPageViewControllerDataSource协议的一个NSObject的子类,这个类是页面视图控制器的数据资源类。
 
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished
previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed;
 
当用户从一个页面转向下一个或者前一个页面,或者当用户开始从一个页面转向另一个页面的途中后悔 了,并撤销返回到了之前的页面时,将会调用这个方法。假如成功跳转到另一个页面时,transitionCompleted 会被置成 YES,假如在跳转途中取消了跳转这个动作将会被置成 NO。
 
- (UIPageViewControllerSpineLocation) pageViewController:(UIPageViewController *)pageViewController spineLocationForInte易做图ceOrientation:(UIInte易做图ceOrientation)orientation;
 
当设备的方向改变了将会调用这个方法。你可以使用这个方法通过返回 UIPageViewControllerSpinelocation 类型的一个值来设定页面主键的位置:
 
enum {
UIPageViewControllerSpineLocationNone = 0, UIPageViewControllerSpineLocationMin = 1, UIPageViewControllerSpineLocationMid = 2, UIPageViewControllerSpineLocationMax = 3
};
typedef NSInteger UIPageViewControllerSpineLocation;
 
这个可能对于你来说有点复杂,让我来给你演示一下。假如我们使用一个 UIpageViewControllerSpineLocationMi
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,