黑马程序员_iOS 的高级控件之UIScrollView
2014-03-25 11:02
113 查看
iOS,Android,Java培训,期待与您的交流
iOS应用开发的一项内容就是用户界面的开发。不管应用程序实际包含的逻辑有多复杂,如果这个应用程序没有提供友好的图形用户界面,將很难吸引用户。作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到爽,这个应用程序才有价值。
1 UIScrollView的基本概念
UIScrollView代表一个可滚动的控件,该控件允许用户拖动手指来滚动控件中的内容。通过滚动控件的支持,UIScrollView可以显示超过一个屏幕的内容。
UIScrollView支持如下的三个属性。
1、contentSize:该属性是CGSize类型,代表UIScrollView所需要显示内容的完整宽度和高度
2、contentInset:该属性是UIEdgeInsets类型,它是一个结构体,包含top、left、bottom、right四个成员变量,用于设置四个方向上,滚动条区域的大小
3、contentOffset:该属性是CGPoint类型,表示UIScrollView在显示内容上滚动的位置
通过手势,能够缩放UIScrollView里的内容。这个功能是通过代理模式实现,代理对象应该实现协议UISCrollViewDelegate的一个方法。
1、- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView,返回需要缩放的视图控件
其他可以实现的方法。
2、-(void)scrollViewDidZoom:(UIScrollView *)scrollView,正在缩放的时候调用
3、-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale,缩放完毕的时候调用
UIScrollView的分页功能,一般都会和UIPageControl一起实现。UIPageControl由N个小圆点组成,每个原点代表一个页面,当前页面以高亮的原点显示。UIPageControl的常见属性。
NSInteger numberOfPages : 总页数
NSInteger currentPage : 当前的页码
BOOL hidesForSinglePage : 当只有一页的时候,是否要隐藏视图
UIScrollView的分页效果只需要设置pagingEnabled=YES
iOS应用开发的一项内容就是用户界面的开发。不管应用程序实际包含的逻辑有多复杂,如果这个应用程序没有提供友好的图形用户界面,將很难吸引用户。作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到爽,这个应用程序才有价值。
1 UIScrollView的基本概念
UIScrollView代表一个可滚动的控件,该控件允许用户拖动手指来滚动控件中的内容。通过滚动控件的支持,UIScrollView可以显示超过一个屏幕的内容。
UIScrollView支持如下的三个属性。
1、contentSize:该属性是CGSize类型,代表UIScrollView所需要显示内容的完整宽度和高度
2、contentInset:该属性是UIEdgeInsets类型,它是一个结构体,包含top、left、bottom、right四个成员变量,用于设置四个方向上,滚动条区域的大小
3、contentOffset:该属性是CGPoint类型,表示UIScrollView在显示内容上滚动的位置
- (void)viewDidLoad { [super viewDidLoad]; // 1.创建UIScrollView UIScrollView *scrollView = [[UIScrollView alloc] init]; scrollView.frame = CGRectMake(0, 0, 250, 250); // frame中的size指UIScrollView的可视范围 scrollView.backgroundColor = [UIColor grayColor]; [self.view addSubview:scrollView]; // 2.创建UIImageView(图片) UIImageView *imageView = [[UIImageView alloc] init]; imageView.image = [UIImage imageNamed:@"big.jpg"]; CGFloat imgW = imageView.image.size.width; // 图片的宽度,1366 CGFloat imgH = imageView.image.size.height; // 图片的高度,768 imageView.frame = CGRectMake(0, 0, imgW, imgH); [scrollView addSubview:imageView]; // 3.设置scrollView的属性 // 设置UIScrollView的滚动范围(内容大小),如果滚动区域小于imageView的frame,则只能看到一部分图片 scrollView.contentSize = imageView.image.size; // scrollView.contentSize = CGSizeMake(320, 480); // 隐藏水平滚动条 scrollView.showsHorizontalScrollIndicator = NO; scrollView.showsVerticalScrollIndicator = NO; // 用来记录scrollview滚动的位置,指的是scrollview的frame左上角顶点在滚动范围的坐标,滚动范围的原点也是左上角,并且不受滚动条区域的影响(contentInset属性) // scrollView.contentOffset = ; // 去掉弹簧效果 // scrollView.bounces = NO; // 控制滚动条的区域大小,不影响contentSize的大小,可以理解为是在contenSize的基础上向外扩展 // top left bottom right,不影响可视范围的大小,在可视范围截取一部分 scrollView.contentInset = UIEdgeInsetsMake(100, 20, 20, 20); _scrollView = scrollView; }2 UIScrollView的缩放功能
通过手势,能够缩放UIScrollView里的内容。这个功能是通过代理模式实现,代理对象应该实现协议UISCrollViewDelegate的一个方法。
1、- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView,返回需要缩放的视图控件
其他可以实现的方法。
2、-(void)scrollViewDidZoom:(UIScrollView *)scrollView,正在缩放的时候调用
3、-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale,缩放完毕的时候调用
- (void)viewDidLoad { [super viewDidLoad]; // 1.添加UIScrollView UIScrollView *scrollView = [[UIScrollView alloc] init]; // scrollView.frame = CGRectMake(0, 0, 320, 460); scrollView.frame = self.view.bounds; [self.view addSubview:scrollView]; // 2.添加图片 UIImage *image = [UIImage imageNamed:@"big.jpg"]; // 调用initWithImage:方法创建出来的UIImageView,它的宽高默认跟图片的宽高一样 _imageView = [[UIImageView alloc] initWithImage:image]; // // 设置图片 // imageView.image = [UIImage imageNamed:@"big.jpg"]; // // // 设置frame // imageView.frame = CGRectMake(0, 0, imageView.image.size.width, imageView.image.size.height); [scrollView addSubview:_imageView]; // 设置内容范围 scrollView.contentSize = image.size; // 设置scrollview的代理对象 scrollView.delegate = self; // 设置最大伸缩比例 scrollView.maximumZoomScale = 2.0; // 设置最小伸缩比例 scrollView.minimumZoomScale = 0.2; } //ScrollView实现图片缩放功能:只能缩放它内部的控件,只需告诉ScrollView缩放哪个控件 #pragma mark - UIScrollView 的 代理方法 #pragma mark 这个方法返回的控件就能进行捏合手势缩放操作 #pragma mark 当UIScrollView尝试进行缩放的时候就会调用 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return _imageView; } #pragma mark 当缩放完毕的时候调用 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { // NSLog(@"结束缩放 - %f", scale); } #pragma mark 当正在缩放的时候调用 - (void)scrollViewDidZoom:(UIScrollView *)scrollView { // NSLog(@"-----"); }3 UIScrollView的分页功能
UIScrollView的分页功能,一般都会和UIPageControl一起实现。UIPageControl由N个小圆点组成,每个原点代表一个页面,当前页面以高亮的原点显示。UIPageControl的常见属性。
NSInteger numberOfPages : 总页数
NSInteger currentPage : 当前的页码
BOOL hidesForSinglePage : 当只有一页的时候,是否要隐藏视图
UIScrollView的分页效果只需要设置pagingEnabled=YES
- (void)viewDidLoad { [super viewDidLoad]; CGFloat w = self.view.frame.size.width; CGFloat h = self.view.frame.size.height; for (int i = 0; i< kCount; i++) { UIImageView *imageView = [[UIImageView alloc] init]; // 1.设置frame imageView.frame = CGRectMake(i * w, 0, w, h); // 2.设置图片 NSString *imgName = [NSString stringWithFormat:@"0%d.jpg", i + 1]; imageView.image = [UIImage imageNamed:imgName]; [_scrollView addSubview:imageView]; } // height == 0 代表 禁止垂直方向滚动 _scrollView.contentSize = CGSizeMake(kCount * w, 0); _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.pagingEnabled = YES; //用scrollView的Frame进行分页 _scrollView.delegate = self; // 添加PageControl UIPageControl *pageControl = [[UIPageControl alloc] init]; pageControl.center = CGPointMake(w * 0.5, h - 20); pageControl.bounds = CGRectMake(0, 0, 150, 50); pageControl.numberOfPages = kCount; // 一共显示多少个圆点(多少页) // 设置非选中页的圆点颜色 pageControl.pageIndicatorTintColor = [UIColor redColor]; // 设置选中页的圆点颜色 pageControl.currentPageIndicatorTintColor = [UIColor blueColor]; // 禁止默认的点击功能 pageControl.enabled = NO; [self.view addSubview:pageControl]; _pageControl = pageControl; } #pragma mark - UIScrollView的代理方法 #pragma mark 当scrollView正在滚动的时候调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { int page = scrollView.contentOffset.x / scrollView.frame.size.width; // NSLog(@"%d", page); // 设置页码 _pageControl.currentPage = page; }iOS,Android,Java培训,期待与您的交流
相关文章推荐
- 黑马程序员_iOS 的高级控件之UITableView基本应用
- IOS的基本控件的使用-UIScrollView滚动视图的高级功能
- iOS开发UI篇—UIScrollView控件介绍
- iOS开发之 滚动视图 + 页面控件(UIScrollView + UIPageControl)
- UIKit框架-高级控件:2.UIScrollView的单图分页设置
- iOS开发UI篇—UIScrollView控件介绍
- ios的控件UIScrollView的位置定位---------逐渐积累
- ios 10之高级控件UITableView(swift 3.0 )
- iOS开发UI篇—UIScrollView控件介绍
- IOS的基本控件的使用-UIScrollView
- iOS UI-UIScrollView控件实现图片缩放功能
- iOS开发基本控件之UIScrollView
- iOS开发UI篇—UIScrollView控件介绍
- IOS开发之UIScrollView控件详解
- iOS开发小技巧--UIScrollView内部子控件添加约束的注意点
- iOS开发UI篇—UIScrollView控件实现图片轮播
- iOS开发UI篇—UIScrollView控件实现图片轮播
- iOS应用开发中使用UIScrollView控件来实现图片缩放
- IOS控件的应用UIPageController与UIScrollView
- IOS开发UIScrollView控件详解