你的位置:首页 > 操作系统

[操作系统]ios之UIScrollView


UIScrollView 

很多ios的应用软件都会滚动显示单个或多个图片,UIScrollView控件主要就是用来

满足这种需求的,展示一张超出屏幕的图片

 

 UIScorllView控件有三个与显示相关的重要属性:contentSize、contentInset和contentOffSet。

     UIScrollView *scrollView=[[UIScrollView alloc] init];

  UIImageView *imageView=[[UIImageView alloc] initWithImage: [UIImage imageNamed:@"1.jpg"]];

1. 属性contentSize表示UIScrollView中内容视图的大小,返回的是一个CGSize结构体

  类型,该结构体包含width和height两个成员

  scrollView.contentSize = imageView.frame.size;

  此时运行程序,可见只能显示图片的一部分,然后选中图片可以任意移动图片,实现

  滚动屏幕的效果。

2. 属性contentInset用于在UIScrollView控件中的内容视图周围添加边距,返回的是一

  个UIEdgeInsets结构体类型,该结构体包含top、left、bottom和right四个成员,表示

  四个边距,这里设置上边距和左边距30个像素,

  scrollView.contentInset = UIEdgeInsetsMake(30, 30, 0,0);

  运行程序,滚动图片可见内容视图离上边和左边都有一个空白的边距

3 .属性contentOffSet是内容视图坐标原点和UIScrollView坐标原点的偏移量,可以改

  变显示内容的显示区域,该属性返回一个CGPoint结构体类型

 

 

 其他属性

 设置反弹

 scrollView.bounces = NO;

设置滚动条的样式

  [scrollView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];

设置是否显示平行滚动条

  scrollView.showsHorizontalScrollIndicator = NO;

设置是否显示垂直滚动条

  lscrollView.showsVerticalScrollIndicator = NO;

 

 

三张图片的滑动

- (void)viewDidLoad

{

    [super viewDidLoad];

    UIScrollView *scrollView=[[UIScrollView alloc] init];

    CGRect frame=self.view.frame;

    //设置大小和位置   

     scrollView.frame=frame;

   //加载图片

    UIImage *image1=[UIImage imageNamed:@"1.jpg"];

    UIImage *image2=[UIImage imageNamed:@"2.jpg"];

    UIImage *image3=[UIImage imageNamed:@"3.jpg"];

    self.array=@[image1,image2,image3];    CGSizesize=CGSizeMake(self.array.count*self.view.frame.size.width,self.view.frame.size.height);

    //显示内容大小

    scrollView.contentSize=size;

 

    for(int i=0;i<self.array.count;i++)

       

    {

        UIImageView *imageView=[[UIImageView alloc] initWithImage:self.array[i]];

        imageView.contentMode=UIViewContentModeScaleAspectFit;

      //图片显示的区域       

       imageView.frame=CGRectMake(i*self.view.frame.size.width,0,self.view.frame.size.width, self.view.frame.size.height);

      [scrollView addSubview:imageView];

    }

    scrollView.pagingEnabled=YES;

    [self.view addSubview:scrollView];

}

 

 

 

实现两指缩放功能

1.要遵守<UIScrollViewDelegate>协议

2.方法里面给self.delegate赋值    self.scrollView.delegate = self;

3.实现方法  //那张图片需要缩放

     - (UIView *)viewForZoomingInScrollView:(UIScrollView*)scrollView

    {

     Return self.imageView;

  }

 

  在viewDidLoad里设置可以缩放的比例

   scrollView.minimumZoomScale = 0.1;

   scrollView.maximumZoomScale = 1.0;

 

完整代码:

#import "TRViewController.h"

@interface TRViewController () <UIScrollViewDelegate>

@property (nonatomic, strong)UIImageView *imageView;

@property (nonatomic, strong)UIScrollView *scrollView;

@end

- (void)viewDidLoad

 {

   [super viewDidLoad];

  UIScrollView *scrollView = [[UIScrollViewalloc]init];

   self.scrollView = scrollView;

   //添加显示内容

   UIImageView *imageView=[[UIImageViewalloc]initWithImage:[UIImage imageNamed:@"qwer.jpg"]];

  self.imageView = imageView;

  [self.scrollView  addSubview:imageView];

  self.scrollView.frame = self.view.frame;

  //将self.scrollView添加到父视图

  [self.viewaddSubview:self.scrollView];

  //设置scrollView显示内容的大小

  self.scrollView.contentSize = imageView.frame.size;

   self.scrollView.contentInset = UIEdgeInsetsMake(20, 20,0,0);

  //scrollView的其他属性

   //设置反弹

   self.scrollView.bounces = NO;

   //设置滚动条的样式.

  [self.scrollView  setIndicatorStyle:UIScrollViewIndicatorStyleBlack];

  //设置是否显示平行滚动条

  self.scrollView.showsHorizontalScrollIndicator = NO;

  //设置是否显示垂直滚动条

  self.scrollView.showsVerticalScrollIndicator = NO;

  //给scrollView的委托赋值

  self.scrollView.delegate = self;

  //设置可以缩放的比例

  self.scrollView.minimumZoomScale =0.1

  self.scrollView.maximumZoomScale = 1.0;

}

 //实现方法 那张图片需要缩放

 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

   Return self.imageView;

}

@end