UI06_UIScrollView

尹雅健
2023-12-01

AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end

AppDelegate.m

#import "AppDelegate.h"
#import "RootViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate
- (void)dealloc {
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    [_window release];

    RootViewController *rootVC = [[RootViewController alloc] init];
    self.window.rootViewController = rootVC;
    [rootVC release];

    return YES;
}

RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end

RootViewController.m

#import "RootViewController.h"
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
@interface RootViewController ()<UIScrollViewDelegate>

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
    [self.view addSubview:scrollView];
    [scrollView release];
    scrollView.backgroundColor = [UIColor lightGrayColor];

    //  让scrollView进行滚动, 这个属性很重要, 只有设置了这个属性它才可以进行滚动
    //  水平滚动设置width, 垂直滚动设置height
    scrollView.contentSize = CGSizeMake(8 * WIDTH , 0);
    //  按照页来进行滚动
    scrollView.pagingEnabled = YES;
//    NSLog(@"%@", scrollView.subviews);
    //  把图片放到scrollView上
    for (NSInteger i = 1; i < 8; i++) {
        //  拼接图片名
        NSString *imageName = [NSString stringWithFormat:@"h%ld.jpeg", i];
        //  把图片放到imageView上
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((i - 1) * WIDTH, 0, WIDTH, HEIGHT)];
        imageView.image = [UIImage imageNamed:imageName];
        [scrollView addSubview:imageView];
        [imageView release];

    }
//    NSLog(@"%@", scrollView.subviews);
//    NSLog(@"%ld", scrollView.subviews.count);
    //  在第7张图片后面, 再加一个imageview, 并且显示第一张图片内容, 注意, 相应的contentsize也要进行修改
    UIImageView *lastImageView = [[UIImageView alloc] initWithFrame:CGRectMake(7 * WIDTH, 0, WIDTH, HEIGHT)];
    lastImageView.image = [UIImage imageNamed:@"h1.jpeg"];
    [scrollView addSubview:lastImageView];
    [lastImageView release];

    //  关闭边界回弹效果
    scrollView.bounces = NO;
    //  把水平和垂直的滚动条关闭
    //  水平
    scrollView.showsHorizontalScrollIndicator = NO;
    //  垂直
//    scrollView.showsVerticalScrollIndicator = NO;

    scrollView.tag = 1000;

    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];

    //  设置代理人
    scrollView.delegate = self;





}
#pragma mark    只要一拖拽, 一滚动, 就会触发这个协议方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"%g", scrollView.contentOffset.x);
}
#pragma mark    当滑动结束, 稳定之后才被触发
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"我被触发了");
//    [scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x + WIDTH, 0)];
//    if (scrollView.contentOffset.x == 7 * WIDTH) {
//        scrollView.contentOffset = CGPointMake(0, 0);
//    }
//    
    if (scrollView.contentOffset.x == 7 * WIDTH) {
        scrollView.contentOffset = CGPointMake(0, 0);
    }
}


#pragma mark    通过NSTimer来让scrollview进行无限滚动
- (void)changeImage{

    //  通过tag找scrollView
    UIScrollView *scroll = (UIScrollView *)[self.view viewWithTag:1000];
    //  通过设置偏移量, 让哪一张视图显示在屏幕上, 重要
    [scroll setContentOffset:CGPointMake(scroll.contentOffset.x + WIDTH, 0) animated:YES];
    //  判断是否到当前的最后一张, 如果到了, 需要把偏移量设置到第一张图片位置
    if (scroll.contentOffset.x == 7 * WIDTH) {
        scroll.contentOffset = CGPointMake(0 * WIDTH, 0);
    }

}
 类似资料:

相关阅读

相关文章

相关问答