UIScrollView
用法
添加内容到scrollview
设置(CGSize)contentSize
self.scrollView.contentSize = CGSizeMake(100, 400);
//如果想禁止某个方向滚动,设置0即刻。
self.scrollView.contentSize = CGSizeMake(0, 400);
//这也说明了contentSize意义是设置能**滚**多远
其他属性 && 函数
函数
CGRectGetMaxY(frame), view最下面的y值
CGRectGetMaxX(frame)
属性
(UIEdgeInset)contentInset: (UIEdgeInsetMake)(四个方向)
(CGPoint)contentOffSet : CGPointMake(x, y) //偏移量,记录scrollview滚
到哪,即让内容移动的属性
//x,y 是内容左上角基于scrollview左上角的差值 //往左上方偏移为正数,右
下方偏移是负数
self.scrollView.contentOffset = CGPointMake(self.scrollVi
ew.contentOffset.x, 0);
添加动画
[UIView animateWithDuration:0.5 animations:^{
self.scrollView.contentOffset = CGPointMake(self.scrol
lView.contentOffset.x, 0);
}];
//或者
[UIView animateWithDuration:0.5 animations:^{
self.scrollView.contentOffset = CGPointMake(self.scrol
lView.contentOffset.x, 0);
} completion:^(BOOL finished) {
NSLog(@"运行完啦!");
}];
//或者
[self.scrollView setContentOffset:offset anmited:YES];
注意 不能直接修改OC对象的结构体里的成员: _scrollView.contentOffset.x =
5; 这是错的. CGPoint point = xx; point.x = 5.0;//这是对的,不是对象结构体
滚动条
滚动条也是scrollview的subview
self.scrollView.showsHorizontalScrollIndicator = NO;
7.4 Delegate of ScrollView
首先将当前view设置为代理才能进行滚动监听
UIScrollView
43
@interface ViewController() <UISCrollViewDelegate>
@property (weak, nonatomic) IBOutlet UISCrollView* scrollView;
@end;
//设置代理
self.scrollView.delegate = self;
//代理函数:
- (void) scroolViewDidScroll:(UIScrollView*)scrollView {
}
(void) scrollViewWillBeginDragging
(void) scrollViewDidEndDragging:
(void) scrollViewDidEndDecelerating://由于惯性引起的停止滚动
缩放
_scrollView.delegate = self;
//缩放
_scrollView.maximumZoomScale = 1.5;
_scrollView.minimumZoomScale = 0.5;
//代理方法:
- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scroll
View {
return_imageView;//scrollview的content里面的控件
}
Paging: 分页
- 基本使用
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.pagingEnabled = YES;//scroll的宽度为一页
- 优化
如果图片一多,就会出现内存过大问题
通过循环利用来解决:
2.4 UIScrollView
44
- 页码指示器:PageControl
整体: uiview -> scrollview + pageControl
UIPageControl *pageControl = [[UIPageControl alloc]init];
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
int page = (int)(self.scrollView.contentOffset.x/self.scroll
View.frame.size.width +0.5);
self.pageControl.currentPage = page;
}
//让数组所有对象执行相同方法
[self.scrollView.subviews makeObjectPerformSelector:@selector(re
moveFromSuperView)];
self.pageControl.hideForSinglePage = YES;
悬停
//0706 偏移量达到某高度 [self.view addSubView:Xview];
回到这个高度后,在加到scrollview [self.scrollview addSubBiew:Xview]
下拉放大
if (offsetY <0) {
CGFloat scale = 1- (offSetY/100);
self.imageView.transform = CGAffinTransformMakeScale(scale,
scale);
}