有个介绍app新特性的界面金沙js娱乐场官方网站:,只有第一次运行程序时才说会出现

本文介绍了app欢迎页的简单实现,只有第一次运行程序时才说会出现,新特性界面,有个介绍app新特性的界面,加载滑动图,一般都会附上一个滑动图(只显示一次),UIScrollView的最大属性就是可以滚动,上一段代码初始化,本案例将学习如何以代码的方式使用UIImageView视图控件来展示图片,最后设置展示图片的样式

金沙js娱乐场官方网站 5

IOS 欢迎页(UIScrollView,UIPageControl),uipagecontrol

本文介绍了app欢迎页的简单实现。只有第一次运行程序时才说会出现,其余时间不会出现。下面是效果图。

金沙js娱乐场官方网站 1

代码如下:(如有不明白的可以评论我,我会详细讲解)

//
//  ViewController.m
//  CX IOS欢迎页
//
//  Created by ma c on 16/3/18.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>

@property (nonatomic, strong) UIScrollView * scrollView;
@property (nonatomic, strong) UIPageControl * pageControl;

@end

@implementation ViewController
#pragma mark - life
- (void)viewDidLoad {
    [super viewDidLoad];
   //判断是否是第一次运行程序
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
//    [userDefaults removeObjectForKey:@"FirstLoad"];
    if ([userDefaults objectForKey:@"FirstLoad"] == nil) {
        [userDefaults setBool:NO forKey:@"FirstLoad"];
        [self loadScrollView];
    }



}
#pragma mark - deleDate

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    CGPoint point = self.scrollView.contentOffset;

    NSInteger current = point.x / self.view.frame.size.width;

    self.pageControl.currentPage = current;

}

#pragma mark - function
-(void)loadScrollView{

    CGRect rect = [UIScreen mainScreen].bounds;

    self.scrollView = [[UIScrollView alloc]initWithFrame:rect];
    //分页
    self.scrollView.pagingEnabled = YES;

    self.scrollView.delegate = self;

    self.scrollView.showsHorizontalScrollIndicator = NO;

    self.scrollView.showsVerticalScrollIndicator = NO;
    //scrollView滚动区域大小
    self.scrollView.contentSize = CGSizeMake(rect.size.width * 4, rect.size.height);

    for (NSInteger i = 0; i < 4; i ++) {

        UIImageView * imageView = [[UIImageView alloc]init];

        imageView.frame = CGRectMake(i * rect.size.width, 0, rect.size.width, rect.size.height);
        //为了区别imageView而又简单操作,建立随机颜色。
        imageView.backgroundColor = [UIColor colorWithRed:arc4random() % 255 / 255.f green:arc4random() % 255 / 255.f blue:arc4random() % 255 / 255.f alpha:1];
        [self.scrollView addSubview:imageView];

        //添加开启软件
        UIButton * removeBUtton = [UIButton buttonWithType:UIButtonTypeCustom];

        removeBUtton.frame = CGRectMake(150 + 3 * rect.size.width, rect.size.height * 0.7, rect.size.width - 300, 30);

        [removeBUtton setTitle:@"开启旅行" forState:UIControlStateNormal];

        [removeBUtton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        removeBUtton.backgroundColor = [UIColor orangeColor];

        [removeBUtton addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside];

        [self.scrollView addSubview:removeBUtton];
    }

    [self.view addSubview:self.scrollView];

    [self loadPageControl];

}

-(void)start{

    [self.pageControl removeFromSuperview];

    [self.scrollView removeFromSuperview];

}
-(void)loadPageControl{

    CGRect rect = [UIScreen mainScreen].bounds;

    self.pageControl = [[UIPageControl alloc]init];

    self.pageControl.numberOfPages = 4;

    CGSize pageControlSize = [self.pageControl sizeForNumberOfPages:4];

    self.pageControl.frame = CGRectMake((rect.size.width - pageControlSize.width) / 2, rect.size.height * 0.8, pageControlSize.width, pageControlSize.height);

    self.pageControl.currentPage = 0;

    self.pageControl.currentPageIndicatorTintColor = [UIColor greenColor];

    self.pageControl.pageIndicatorTintColor = [UIColor grayColor];

    [self.view addSubview:self.pageControl];

    [self.view bringSubviewToFront: self.pageControl];

}
@end

 

欢迎页(UIScrollView,UIPageControl),uipagecontrol
本文介绍了app欢迎页的简单实现。只有第一次运行程序时才说会出现,其余时间不会出现。…

   NSUserDefaults可以将数据永久的保存在手机中,他是一个单例,用起来很方便,所以很适合用于保存简单的数据和为数据做标记。

(1)初始化

1.1 问题

在ios开发中经常需要展示图片以满足需求和美化界面,本案例将学习如何以代码的方式使用UIImageView视图控件来展示图片,如图-1所示:

金沙js娱乐场官方网站 2

图-1

  1. 启动程序后,有个介绍app新特性的界面

pagingEnabled :
是否支持一页一页的翻,设置成YES后,每一次滑动,翻动一页;

初始化UIPageControl的方法都很简单,就是上面讲的alloc和init,不过大家要记住的一点就是如果你定义了全局变量一定要在delloc那里释放掉。

1.2 方案

UIImageView是UIView的子类,主要功能是用来展示图片,首先创建一个带有xib的SingleViewApplication项目,根视图控制器命名为TRImageViewController并添加图片素材到项目。

其次使用代码创建对象,在TRImageViewController.m文件中viewDidLoad方法里面创建一个UIImage对象image和UIImageView对象imageView,将image赋值给imageView的image属性。

然后设置UIImageView的frame属性,在父视图上添加imageView对象。

最后设置展示图片的样式,查看不同的样式展现的图片效果。

效果图

涉及的相关属性:

 

3.4 完整代码

本案例中,TRWelcomeViewController.h文件中的完整代码如下所示:

 

  1. #import <UIKit/UIKit.h>
    1. @interfaceTRWelcomeViewController
      : UIViewController
  2. @property (nonatomic, strong) NSArray *imageNames;
  3. @end 

本案例中,TRWelcomeViewController.m文件中的完整代码如下所示:

 

  1. #import “TRWelcomeViewController.h”
    1. @interface TRWelcomeViewController () <UIScrollViewDelegate>
  2. @property (nonatomic, strong)UIPageControl *pageControl;
  3. @end
    1. @implementation
      TRWelcomeViewController
      • (NSArray *)imageNames
  4. {
  5. if(!_imageNames)
    _imageNames = @[@”Welcome1.jpg”, @”Welcome2.jpg”, @”Welcome3.jpg”, @”Welcome4.jpg”, @”Welcome5.jpg”];
  6. return _imageNames;
  7. }
      • (void)viewDidLoad
  8. {
  9. [superviewDidLoad];
  10. //创建ScrollView
  11. UIScrollView *scrollView = [[UIScrollViewalloc]initWithFrame:self.view.frame];
    1. //加入多个子视图(ImageView)
  12. for(inti=0; i<self.imageNames.count; i++){
  13. UIImage *image = [UIImageimageNamed:self.imageNames[i]];
  14. UIImageView *imageView = [[UIImageViewalloc]initWithImage:image];
  15. CGRect frame = CGRectZero;
  16. frame.origin.x = i * scrollView.frame.size.width;
  17. frame.size = scrollView.frame.size;
  18. imageView.frame = frame;
  19. [scrollViewaddSubview:imageView];
  20. }
  21. //设置相关属性
  22. CGSize size = CGSizeMake(scrollView.frame.size.width * self.imageNames.count, scrollView.frame.size.height );
  23. scrollView.contentSize = size;
  24. scrollView.showsVerticalScrollIndicator = NO;
  25. //整页滚动
  26. scrollView.pagingEnabled = YES;
    1. //加入到当前视图self.view
  27. [self.viewaddSubview:scrollView];
    1. //加入页面指示控件PageControl
  28. UIPageControl *pageControl = [[UIPageControlalloc]init];
  29. self.pageControl =
    pageControl;
  30. //设置frame
  31. pageControl.frame = CGRectMake(0, self.view.frame.size.height – 40, self.view.frame.size.width, 20);
  32. //分页面的数量
  33. pageControl.numberOfPages = self.imageNames.count;
  34. //设置翻页标渲染颜色
  35. pageControl.pageIndicatorTintColor =
    [UIColorblackColor];
  36. //设置当前翻页标的渲染颜色
  37. pageControl.currentPageIndicatorTintColor = [UIColorredColor];
  38. //关闭用户交互
  39. pageControl.userInteractionEnabled =
    NO;
  40. //添加到父视图
  41. [self.viewaddSubview:pageControl];
    1. scrollView.delegate = self;
    1. //加个按钮
  42. UIButton *button = [UIButtonbuttonWithType:UIButtonTypeSystem];
  43. CGRect frame = self.view.frame;
  44. frame.origin.x = scrollView.frame.size.width * (self.imageNames.count – 1);
  45. button.frame = frame;
  46. [scrollViewaddSubview:button];
  47. [buttonaddTarget:self action:@selector(enter) forControlEvents:UIControlEventTouchUpInside];
  48. }
    • (void)enter
  49. {
  50. NSLog(@”进入音乐应用”);
  51. }
  52. //UIScrollViewDelegate方法
    • (void)scrollViewDidScroll:(UIScrollView *)scrollView
  53. {
  54. CGPoint offset = scrollView.contentOffset;
  55. if(offset.x<=0){
  56. offset.x = 0;
  57. scrollView.contentOffset =
    offset;
  58. }
  59. NSUInteger index = round(offset.x / scrollView.frame.size.width);
  60. self.pageControl.currentPage
    = index;
  61. }
    1. @end

     

#import "WBNewFeatureViewController.h"
#import "UIButton+Extension.h"

@interface WBNewFeatureViewController ()<UIScrollViewDelegate>
@property (nonatomic,weak)UIPageControl *pageControl;
@end

@implementation WBNewFeatureViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    //创建scrollView
    UIScrollView *scrollView  = [[UIScrollView alloc]initWithFrame: self.view.bounds];

    //开启分页
    scrollView.pagingEnabled = YES;
    //去除水平方向滚动条
    scrollView.showsHorizontalScrollIndicator = NO;

    //监听滑动-->成为代理
    scrollView.delegate = self;

    //动画图片个数
    NSInteger count= 4;

    for (int i=0; i<count; i++) {

        UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"new_feature_%d",i+1]];

        UIImageView *imgView = [[UIImageView alloc]initWithImage:img];
        //设置imageView的大小
        imgView.size = scrollView.size;
        imgView.x = i*scrollView.width;
        [scrollView addSubview:imgView];

        if (i == count-1) {
            //最后一页
            [self setupLastPageWithView:imgView];
        }

    }
    //设置scrollView的内容大小
    [scrollView setContentSize:CGSizeMake(count * scrollView.width, 0)];
    [self.view addSubview:scrollView];


    /*
     添加分页控件
     1. 创建分页控件
        1. 分页控件的位置
        2. 分页控件选中与默认颜色(如没有,则显示为白色)
     2. 分页控件和UIScrollView关联
        1. 遵循代理
        2. 设置当前为代理类(滑动时,分页控件改变)
        3. 实现代理方法(滑动时,改变分页控件)
     */

    UIPageControl * pageControl = [[UIPageControl alloc]init];
    //设置显示几页
    pageControl.numberOfPages = count;
    //设置选中的颜色与默认的颜色
    pageControl.pageIndicatorTintColor = [UIColor grayColor];
    pageControl.currentPageIndicatorTintColor = [UIColor orangeColor];


    //设置位置
    pageControl.centerX = self.view.width*0.5;
    pageControl.y = self.view.height - 100;
    self.pageControl = pageControl;
    [self.view addSubview:pageControl];

}

//设置最后页视图
- (void)setupLastPageWithView:(UIImageView *)imageView{

    imageView.userInteractionEnabled = YES;

    //'进入微博'按钮(背景图片按钮)
    UIButton *enterButton = [[UIButton alloc]init];
    //正常状态图片按钮
    [enterButton setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button"]forState:UIControlStateNormal];
    //高亮状态图片按钮
    [enterButton setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button_highlighted"] forState:UIControlStateHighlighted];

    //设置按钮大小(currentBackgroundImage - 背景图片)
    enterButton.size = enterButton.currentBackgroundImage.size;
    //设置按钮位置
    enterButton.centerX = imageView.width * 0.5;
    enterButton.y = imageView.height - 150;
    //设置标题
    [enterButton setTitle:@"进入微博" forState:UIControlStateNormal];

    //成为imageView的子类
    [imageView addSubview:enterButton];




    //分享按钮
    UIButton *shareBtn = [[UIButton alloc] init];
    [shareBtn setTitle:@"分享到微博" forState:UIControlStateNormal];
    //设置不同状态的图片
    [shareBtn setImage:[UIImage imageNamed:@"new_feature_share_false"] forState:UIControlStateNormal];
    [shareBtn setImage:[UIImage imageNamed:@"new_feature_share_true"] forState:UIControlStateSelected];

    [shareBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [shareBtn addTarget:self action:@selector(shareBtnClick:) forControlEvents:UIControlEventTouchUpInside];

    //自适应内容大小
    [shareBtn sizeToFit];

    shareBtn.centerX = enterButton.centerX;
    shareBtn.y = enterButton.y - 40;


    [imageView addSubview:shareBtn];

}
//"进入微博"按钮点击事件
-(void)shareBtnClick:(UIButton*)button{
    button.selected = !button.selected;
    NSLog(@"%s",__func__);
}
// 已经滑动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    //contentOffset 偏移量
    double page = scrollView.contentOffset.x /scrollView.width;
    //指定当前页所展示的当前页面(滑动到一半位置,则显示下一页)
    self.pageControl.currentPage = (int)(page+0.5);
}
@end
  • (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
    CGFloat W = self.view.frame.size.width;
    int page2 = scrollView.contentOffset.x/W ;
    // 添加一个取余方法 来达到 在页面滚动到一整页的时候才更改视图
    CGFloat X = (int)scrollView.contentOffset.x % (int)W;
    if (page2 == 0 && X == 0) {
    //下面这个=2这个2对应的是第几张图片(也就是没滑动之前,偏移量为0时,对应page2=最后一张图片的数字。)
    page2 = 2;
    [_detailScrollView setContentOffset:CGPointMake(page2 * W,
    0)];
    //而这个就是滑倒最后一页的时候,即第一张又回到最开始的位置,偏移量为3,对应的page2=1对应第一张图片。(括号里的page2是偏移量,下面的page2是对应的第几张图片);
    }else if (page2 == 3 && X == 0)
    {
    page2 = 1 ;
    [_detailScrollView setContentOffset:CGPointMake(page2 * W,
    0)];
    }
    if (X == 0) {
    _pageControl.currentPage = page2-1;
    }
    }

 

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义和实现图片名数组

项目创建完成后,首先在TRWelcomeViewController.h文件中定义个NSArray类型的数组imageNames,并在TRWelcomeViewController.m文件中使用懒汉模式进行初始化,将五张欢迎图片的图片名放进数组,代码如下所示:

 

  1. //TRWelcomeViewController.h文件中
  2. @interfaceTRWelcomeViewController
    : UIViewController
  3. @property (nonatomic, strong) NSArray *imageNames;
  4. @end
  5. //TRWelcomeViewController.m文件中
    • (NSArray *)imageNames
  6. {
  7. if(!_imageNames)
    _imageNames = @[@”Welcome1.jpg”, @”Welcome2.jpg”, @”Welcome3.jpg”, @”Welcome4.jpg”, @”Welcome5.jpg”];
  8. return _imageNames;
  9. }

步骤二:创建UIScrollView对象,并添加内容视图

首先在TRWelcomeViewController.m文件中viewDidLoad:中创建一个UIScrollView对象scrollView,设置frame使其填充满父视图,添加到父视图,代码如下所示:

 

  1. //创建ScrollView
  2. UIScrollView *scrollView = [[UIScrollViewalloc]initWithFrame:self.view.frame];
  3. [self.viewaddSubView:scrollView];

其次使用循环语句创建五个UIImageView对象分别显示五张欢迎图片,依次并排添加到scrollView中,这里要注意imageView的frame的设置,代码如下所示:

 

  1. //加入多个子视图(ImageView)
  2. for(inti=0; i<self.imageNames.count; i++){
  3. UIImage *image = [UIImageimageNamed:self.imageNames[i]];
  4. UIImageView *imageView = [[UIImageViewalloc]initWithImage:image];
  5. CGRect frame = CGRectZero;
  6. frame.origin.x = i * scrollView.frame.size.width;
  7. frame.size = scrollView.frame.size;
  8. imageView.frame = frame;
  9. [scrollViewaddSubview:imageView];
  10. }

最后设置scrollView显示的相关属性,这里需要注意contentSize的值是五张图片连接起来的大小,代码如下所示:

  1. //设置内容视图大小
  2. CGSize size = CGSizeMake(scrollView.frame.size.width * self.imageNames.count, scrollView.frame.size.height );
  3. scrollView.contentSize = size;
  4. //垂直滚动条隐藏
  5. scrollView.showsVerticalScrollIndicator = NO;

在这里还需要设置一个pageEnable属性,该属性用来控制翻页的效果,代码如下所示:

  1. //整页滚动
  2. scrollView.pagingEnabled = YES;

步骤三:创建UIPageController对象

UIPageController控件主要用来实现视图分页,通常会和UIScrollView配合使用,首先在TRWelcomeViewController.m文件中定义个UIPageController类型的属性pageController。然后在viewDidLoad:方法给该属性赋值,代码如下所示:

 

  1. @interface TRWelcomeViewController () <UIScrollViewDelegate>
  2. @property (nonatomic, strong)UIPageControl *pageControl;
  3. @end
  4. //viewDidLoad方法里面赋值,创建UIPageController对象
  5. UIPageControl *pageControl = [[UIPageControlalloc]init];
  6. self.pageControl =
    pageControl;

其次设置pageController的相关属性,并添加到父视图,注意父视图是self.view,而不是scrollView,代码如下所示:

 

  1. //加入页面指示控件PageControl
  2. UIPageControl *pageControl = [[UIPageControlalloc]init];
  3. self.pageControl =
    pageControl;
  4. //设置frame
  5. pageControl.frame = CGRectMake(0, self.view.frame.size.height – 40, self.view.frame.size.width, 20);
  6. //分页面的数量
  7. pageControl.numberOfPages = self.imageNames.count;
  8. //设置翻页标渲染颜色
  9. pageControl.pageIndicatorTintColor =
    [UIColorblackColor];
  10. //设置当前翻页标的渲染颜色
  11. pageControl.currentPageIndicatorTintColor = [UIColorredColor];
  12. //关闭用户交互
  13. pageControl.userInteractionEnabled =
    NO;
  14. //添加到父视图
  15. [self.viewaddSubview:pageControl];

最后实现pageController的指示标配合scrollView的滚动显示功能,此功能需要通过scrollView的delegate来实现。

所以首先需要遵守<UIScrollViewDelegate>协议,然后在viewDidLoad:方法里面给delegate赋值,最后实现协议中的scrollViewDidScroll:方法,该方法在每次完成滚动的时候都会被调用,即在该方法里面计算出当前显示第几页并赋值给self.pageControl.currentPage即可,代码如下所示:

 

  1. //遵守协议
  2. @interface TRWelcomeViewController () <UIScrollViewDelegate>
  3. //viewDidLoad方法里面给delegate赋值
  4. scrollView.delegate = self;
  5. //实现UIScrollViewDelegate协议方法
    • (void)scrollViewDidScroll:(UIScrollView *)scrollView
  6. {
  7. //计算当前显示第几页
  8. CGPoint offset = scrollView.contentOffset;
  9. if(offset.x<=0){
  10. offset.x = 0;
  11. scrollView.contentOffset =
    offset;
  12. }
  13. NSUInteger index = round(offset.x / scrollView.frame.size.width);
  14. self.pageControl.currentPage
    = index;
  15. }

步骤四:添加跳转按钮

在第五张欢迎图片上面覆盖一个一样大小的透明按钮,模拟实现一个进入音乐播放器的功能,在这里控制台输出一句话”进入音乐应用”即可,代码如下所示:

 

  1. //viewDidLoad方法里面添加按钮
  2. UIButton *button = [UIButtonbuttonWithType:UIButtonTypeSystem];
  3. CGRect frame = self.view.frame;
  4. frame.origin.x = scrollView.frame.size.width * (self.imageNames.count – 1);
  5. button.frame = frame;
  6. [scrollViewaddSubview:button];
  7. [buttonaddTarget:self
  8. action:@selector(enter)

  9. orControlEvents:UIControlEventTouchUpInside];

  10. //实现enter方法
    • (void)enter
  11. {
  12. NSLog(@”进入音乐应用”);
  13. }

金沙js娱乐场官方网站 3

更多的关于NSUserDefaults的介绍请看:NSUserDefaults 简介

 

4.2 方案

断点是指在条件满足的情况下程序会挂起在那里,可以在这里查看变量、单步运行等操作内容。首先设置断点,等程序挂起之后可以在调试工具栏里面一步步进行查看。

需求:

//判断滑动图是否出现过,第一次调用时“isScrollViewAppear” 这个key
对应的值是nil,会进入if中
if (![@”YES” isEqualToString:[userDefaults
objectForKey:@”isScrollViewAppear”]]) {

UIScrollView *sv  = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, 400)];

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:创建UIScrollView对象

首先在已经创建好的Xcode项目中选择TRViewController.m文件,定义一个UIScrollView类型的私用属性scrollView和一个UIImageView类型的私有属性imageView,在viewDidLoad:方法里面创建一个UIScrollView对象,赋值给属性scrollView,代码如下所示:

 

  1. @interface TRViewController ()
  2. @property (nonatomic, strong)UIScrollView *scrollView;
  3. @property (nonatomic, strong)UIImageView *imageView;
  4. @end
  5. //viewDidLoad方法中
    • (void)viewDidLoad
  6. {
  7. [superviewDidLoad];
  8. UIScrollView *scrollView = [[UIScrollViewalloc]init];
  9. self.scrollView =
    scrollView;
  10. }

步骤二:给scrollView添加内容视图

在viewDidLoad:方法里面创建一个UIImageView对象,赋值给属性imageView,并设置好imageView显示的图片,imageView就是scrollView的内容视图,然后将imageView添加到scrollView中,注意此时并没有设置imageView的frame,则imageView的原点坐标就是{0,0},宽高直接就是原图片的宽高,代码如下所示:

 

  1. UIImageView *imageView = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:@”Galaxy.jpg”]];
  2. self.imageView =
    imageView;
  3. [self.scrollViewaddSubview:imageView];

步骤三:设置scrollView的相关属性

将self.scrollView的frame设置为父视图的frame,使其填充满父视图,将self.scrollView添加到父视图,代码如下所示:

 

  1. self.scrollView.frame = self.view.frame;
  2. [self.viewaddSubview:self.scrollView];

然后设置self.scrollView的显示属性,UIScorllView控件有三个与显示相关的重要属性:contentSize、contentInset和contentOffSet。

属性contentSize表示UIScrollView中内容视图的大小,返回的是一个CGSize结构体类型,该结构体包含width和height两个成员,本案例scrollView显示的视图大小就是self.imageView的大小,代码如下所示:

 

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

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

属性contentInset用于在UIScrollView控件中的内容视图周围添加边距,返回的是一个UIEdgeInsets结构体类型,该结构体包含top、left、bottom和right四个成员,表示四个边距,这里设置上边距和左边距20个像素,代码如下所示:

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

运行程序,滚动图片可见内容视图离上边和左边都有一个空白的边距,效果如图-8所示:

金沙js娱乐场官方网站 4

图-8

属性contentOffSet是内容视图坐标原点和UIScrollView坐标原点的偏移量,可以改变显示内容的显示区域,该属性返回一个CGPoint结构体类型,本案例中添加一个导航栏按钮,当点击按钮通过改变contentOffSet属性的值实现内容视图显示位置的改变,代码如下所示:

  1. self.navigationItem.rightBarButtonItem =
    [[UIBarButtonItemalloc]initWithTitle:@”move” style:UIBarButtonItemStyleBorderedtarget:self action:@selector(move)];
  2. //move方法的实现
    • (void)move
  3. {
  4. [self.scrollViewsetContentOffset:CGPointMake(3000, 1600) animated:YES];
  5. }

运行程序,点击按钮可见内容视图的坐标发生了偏移,显示图片的区域发生了改变,如图-9所示:

金沙js娱乐场官方网站 5

图-9

UIScrollView一些其他属性的设置,代码如下所示:

 

  1. //设置反弹
  2. self.scrollView.bounces = NO;
  3. //设置滚动条的样式
  4. [self.scrollViewsetIndicatorStyle:UIScrollViewIndicatorStyleBlack];
  5. //设置是否显示平行滚动条
  6. self.scrollView.showsHorizontalScrollIndicator = NO;
  7. //设置是否显示垂直滚动条
  8. self.scrollView.showsVerticalScrollIndicator = NO;

步骤四:通过delegate实现两指缩放功能

首先TRViewController需要遵守<UIScrollViewDelegate>协议,然后在viewDidLoad:方法里面给self.delegate赋值,代码如下所示:

 

  1. //遵守协议
  2. 有个介绍app新特性的界面金沙js娱乐场官方网站:,只有第一次运行程序时才说会出现。@interface TRViewController ()
    <UIScrollViewDelegate>
  3. //viewDidLoad方法里面进行赋值
  4. self.scrollView.delegate = self;

然后设置放大缩小的最小比例和最大比例,由UIScrollView的属性minimumZoomScale和属性maximumZoomScale来控制,代码如下所示:

 

  1. //设置可以缩放的比例
  2. floathorizontalScale=self.scrollView.frame.size.width / imageView.frame.size.width;
  3. floatverticalScale
    = self.scrollView.frame.size.height / imageView.frame.size.height;
  4. self.scrollView.minimumZoomScale = MIN(horizontalScale, verticalScale);
  5. self.scrollView.maximumZoomScale = 1.0;

然后通过协议方法viewForZoomingInScrollView:确定需要进行方法缩小的视图,本案例中需要放大缩小的视图是self.imageView,代码如下所示:

 

    • (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
  1. {
  2. returnself.imageView;
  3. }

最后运行程序就能对显示的图片进行放大缩小的操作。

思路:

pragma mark – UIScrollViewDelegate

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    // 记录scrollView
    的当前位置,因为已经设置了分页效果,所以:位置/屏幕大小 = 第几页
    int current = scrollView.contentOffset.x/[UIScreen
    mainScreen].bounds.size.width;

    //根据scrollView 的位置对page 的当前页赋值
    UIPageControl *page = (UIPageControl *)[self.view
    viewWithTag:201];
    page.currentPage = current;

    //当显示到最后一页时,让滑动图消失
    if (page.currentPage == 3) {

      //调用方法,使滑动图消失
      [self scrollViewDisappear];
    

    }
    }

四、从屏幕上移除UIScrollView,并保存信息

 这里只需要将UIScrollView和UIPageControl 从主屏幕上移除就可以了,别忘了将启动信息保存到 NSUserDefaults 中,当然你可以设置一些动画效果,或者需要点击才能移除都可以,下面给出的代码是一个简单的动画效果:

代码如下:

-(void)scrollViewDisappear{

//拿到 view 中的 UIScrollView 和 UIPageControl
UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:101];
UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201];

//设置滑动图消失的动画效果图
[UIView animateWithDuration:3.0f animations:^{

    scrollView.center = CGPointMake(self.view.frame.size.width/2, 1.5 * self.view.frame.size.height);

} completion:^(BOOL finished) {

    [scrollView removeFromSuperview];
    [page removeFromSuperview];
}];

//将滑动图启动过的信息保存到 NSUserDefaults 中,使得第二次不运行滑动图
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:@"YES" forKey:@"isScrollViewAppear"];

}

这个滑动图代码稍作修改,可以添加定时翻页,相册浏览,点击连接到相应的事件等,原理都是一样的。

© 著作权归作者所有
分类:ios实战 标签: UIScrollView UIPageControl 启动滑动图

int index = fabs(scrollView.contentOffset.x) / scrollView.frame.size.width;

pageControl.currentPage = index;

2 使用UIScrollView展示一张超出屏幕的图片