小探UIScrollView(二)缩放视图

这篇博客写一下缩放UIScrollView视图的方法。

直接上代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 1.设置scroll view的基本属性
    scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    scrollView.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:scrollView];
    
    
    // 2.设置scroll view与zoom相关的属性
    scrollView.minimumZoomScale = 0.5;
    scrollView.maximumZoomScale = 10.0;
    scrollView.zoomScale = 1.0;
    scrollView.bouncesZoom = YES;
    scrollView.contentSize = CGSizeMake(640.0, 1136.0);
    scrollView.delegate = self;
    
    
    // 3.添加一张图片
    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
    [scrollView addSubview:imageView];
    imageView.center = scrollView.center;
}


#pragma mark - UIScrollView Delegate

/* 在scrollview中Zoom的目标视图 */
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return imageView;
}

/* scrollview将要开始Zooming */
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
    NSLog(@"Begin Zooming");
}

/* scrollview已经发生了Zoom事件 */
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    NSLog(@"Did Zoom");
}

/* scrollview完成Zooming */
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
    if (self.scrollView.zoomScale > 1) {
        imageView.center = CGPointMake(self.scrollView.contentSize.width / 2, self.scrollView.contentSize.height / 2);
    }
    else {
        imageView.center = self.view.center;
    }
    
    CGSize size = self.scrollView.contentSize;
    NSLog(@"Content size of scroll view");
    NSLog(@"w = %f, h = %f", size.width, size.height);
    NSLog(@"----------------------------");
    
    NSLog(@"zoomscale = %f", self.scrollView.zoomScale);
    NSLog(@"----------------------------");
    
    CGRect boundsOfScrollView = self.scrollView.bounds;
    NSLog(@"Bounds of scroll view");
    NSLog(@"x = %f, y = %f", boundsOfScrollView.origin.x, boundsOfScrollView.origin.y);
    NSLog(@"w = %f, h = %f", boundsOfScrollView.size.width, boundsOfScrollView.size.height);
}

还有头文件:

@interface ZoomViewController : UIViewController <UIScrollViewDelegate>

@property (nonatomic, strong) UIScrollView *scrollView;

@property (nonatomic, strong) UIImageView *imageView;

@end

以上程序的功能是实现Scroll View中的Image View的缩放,并使图片处于当前视图中心(简单的设置)。


有几点需要注意:

1.为了完成对UIScrollView的缩放,必须设置scrollview的delegate为自己并实现相应方法。

2.scrollview的min zoom scale和max zoom scale参数必须不一致(并且max zoom scale大于min zoom scale),否则不能完成缩放。

3.在UIScrollViewDelegate方法中:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
给出进行Zoom的视图。


- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
当视图将要开始缩放时,要进行的动作可以在这里完成。


- (void)scrollViewDidZoom:(UIScrollView *)scrollView
当视图缩放动作已经发生了。


- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
当scroll view完成zooming时的响应方法,这里scale为zoom的倍数,在min zoom scale到max zoom scale之间。

通常可以在这里进行一些视图布局,例如设置zoom的view在scroll view视图中心。



ScrollView的简单学习先到这里,继续回去做PDF的缩放。

以后遇到相关问题再写博客补充。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值