博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios之UIScrollView
阅读量:4965 次
发布时间:2019-06-12

本文共 3592 字,大约阅读时间需要 11 分钟。

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

转载于:https://www.cnblogs.com/1079062429lm/p/4792114.html

你可能感兴趣的文章
最近戴着眼镜坐电脑前总是不自觉的眼痛就搜了下怎么保护眼睛无意中看到了这篇文章希望广大爱好编程的朋友多注意保护自己的眼睛!!...
查看>>
Eclipse快捷键大全
查看>>
Let's Chat ZOJ - 3961
查看>>
该不该主动去联系多年未联系的老同学?看完这篇文章你再回答
查看>>
业务逻辑漏洞个人经验集锦【不定时更新~】
查看>>
[Swift] Storyboard outlet and action
查看>>
[Compose] 10. Capture Side Effects in a Task
查看>>
[Javascript AST] 0. Introduction: Write a simple BabelJS plugin
查看>>
[Core Javascirpt] Basic Metaprogramming: Dynamic Method
查看>>
[Angular2 Router] Use Params from Angular 2 Routes Inside of Components
查看>>
makefile
查看>>
Spring 构造注入和Set注入复习
查看>>
python --第三方登录--微博
查看>>
Markdown基本介绍
查看>>
git,怎么说呢?应该就是看不懂意思吧?
查看>>
spring boot + vue + element-ui全栈开发入门——windows开发环境
查看>>
1. HTML 多媒体
查看>>
批量导入数据到mssql数据库的
查看>>
mysql数据库---编码格式基本操作
查看>>
《WePayUI组件设计的秘密》——2016年第一届前端体验大会分享
查看>>