【IOS】- ScrollView-01

CGSize contentSize:
设置UIScrollView的滚动范围
CGPoint contentOffset: UIScrollView当前滚动的位置
UIEdgeInsets contentInset: 增加滚动视图四周的增加滚动范围

1.创建

    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:scrollView];

2.添加imageview

    UIImage *image = [UIImage imageNamed:@"001.jpeg"];
    UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
    
    [scrollView addSubview:imageView];
    // 如果不指定uiimageView 大小默认会使用image的大小

3.设置滚动属性

 // 2. 设置滚动视图属性
    [scrollView setContentSize:image.size];

4.设置边界属性

  // 设置边界属性
    UIEdgeInsets edgs = UIEdgeInsetsMake(10, 10, 10, 10);// 上左下右
    [scrollView setContentInset:edgs];

5.设置是否拥有弹簧属性

  [_scrollView setBounces:NO];

6.设置横纵滚动条

    [_scrollView setShowsHorizontalScrollIndicator:NO];
    [_scrollView setShowsVerticalScrollIndicator:NO];

7.设置缩小与放大

    // 指定最小缩放比例
    [_scrollView setMinimumZoomScale:0.2];
    // 指定最大缩放比例
    [_scrollView setMaximumZoomScale:2.0];
    // 设置滚动视图的代理
    [_scrollView setDelegate:self];

8.缩放时执行的方法

#pragma mark 滚动视图的代理方法
// 缩放中的代理方法
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    NSLog(@"缩放中。。。");
}

9.缩放完成执行的代理方法

// 缩放完成的代理方法
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    NSLog(@"缩放完成 %f", scale);
    // 换个图像试试看
    NSString *imageFile = [NSString stringWithFormat:@"%03d.jpeg", arc4random_uniform(10) + 1];
    UIImage *image = [UIImage imageNamed:imageFile];
    
    [_imageView setImage:image];
}

10.返回要缩放的视图对象

// 一定要记住:本代理方法的返回值就是“要缩放的视图对象”
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _imageView;
}

11.移动图像的方法

- (IBAction)moveImage:(UIButton *)sender
{
    CGPoint offset = _scrollView.contentOffset;
    
    switch (sender.tag) {
        case 0:
            offset.x -= 50;
            break;
        case 1:
            offset.y -= 50;
            break;
        case 2:
            offset.y += 50;
            break;
        case 3:
            offset.x += 50;
            break;
        default:
            break;
    }
    
    // 需要做一个位置的修正
    // 水平方向,注意在修正左边位置时,需要使用edge的-left
    UIEdgeInsets edge = _scrollView.contentInset;
    if (offset.x < -edge.left) {
        offset.x = -edge.left;
    } else if (offset.x > _scrollView.contentSize.width - _scrollView.bounds.size.width + edge.right) {
        offset.x = _scrollView.contentSize.width - _scrollView.bounds.size.width + edge.right;
    }
    
    // 垂直方向,注意在修正顶部位置时,需要使用edge的-top
    if (offset.y < -edge.top) {
        offset.y = -edge.top;
    } else if (offset.y > _scrollView.contentSize.height - _scrollView.bounds.size.height + edge.bottom) {
        offset.y = _scrollView.contentSize.height - _scrollView.bounds.size.height + edge.bottom;
    }
    
    [_scrollView setContentOffset:offset animated:YES];

12.增加移动动画

    // 修改图像的便宜位置
    [UIView animateWithDuration:0.3f animations:
     ^{
         [_scrollView setContentOffset:offset];
     }];

 

posted @ 2014-11-07 10:50  太过于漂流  阅读(226)  评论(0编辑  收藏  举报