IOS开发UI阶段 第六周

来源:互联网 发布:白银现货交易软件 编辑:程序博客网 时间:2024/06/06 02:29
8月13日
自习一天,复习UI前面的课程

8月14日
单元格的复用、单元格的常用属性、辅助图标、自适应高度

8月15日
单元格的定制的三种方法

8月16日
做课后作业,自习

8月17日
触摸与手势

8月18日
UIScrollView

综合性的示例:模拟相册

 重要代码:
1、在根视图控制中:
@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.


    //设置视图控制器的滑动视图大小,为yes时,自动从statuBar、navigationBar下面显示

    self.automaticallyAdjustsScrollViewInsets = NO;


    self.title = @"图片浏览";

    

    //创建滑动视图

    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];


    scrollView.delegate = self;


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

        PhotoScrollView *photoScrollView = [[PhotoScrollView alloc]initWithFrame:CGRectMake(scrollView.bounds.size.width * i, 0, scrollView.bounds.size.width, scrollView.bounds.size.height)];

        photoScrollView.tag = i + 100;

        

        //传值

        photoScrollView.img = [UIImage imageNamed:[NSString stringWithFormat:@"%d.JPG", i]];

        

        [scrollView addSubview:photoScrollView];

        

    }

    

    //取消滑动条的显示

    scrollView.showsHorizontalScrollIndicator = NO;

    

    //设置分页

    scrollView.pagingEnabled = YES;

    

    //设置内容尺寸

    scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width * 5,scrollView.bounds.size.height);


    [self.view addSubview:scrollView];


}



#pragma mark -UIScrollViewDelegate


- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    //获取当前下标

    NSInteger nowIndex = scrollView.contentOffset.x / scrollView.bounds.size.width;

    

    if (nowIndex != _lastIndex) {

        PhotoScrollView *photoScrollView = (PhotoScrollView *)[scrollView viewWithTag:_lastIndex + 100];

        

        //还原

        photoScrollView.zoomScale = 1;

    }

    

    _lastIndex = nowIndex;

}

}


@end

2、在滑动视图类中

@implementation PhotoScrollView


- (instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        

        _imgView = [[UIImageView alloc]initWithFrame:self.bounds];

        

        [self addSubview:_imgView];

        

        //设置缩放的最大倍数

        self.maximumZoomScale = 3;

        self.minimumZoomScale = 1;

        

        //取消滚动条

        self.showsHorizontalScrollIndicator = NO;

        self.showsVerticalScrollIndicator = NO;

        

        //设置代理

        self.delegate = self;

        

        //创建单击手势

        UITapGestureRecognizer *navTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(navTapAction:)];

        [self addGestureRecognizer:navTap];

        

        //创建双击手势

        UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

        doubleTap.numberOfTapsRequired = 2;

        [self addGestureRecognizer:doubleTap];

        

        [navTap requireGestureRecognizerToFail:doubleTap];

        

    }

    return self;

}


- (void)setImg:(UIImage *)img

{

    if (_img != img) {

        _img = img;

        

        _imgView.image = self.img;

    }

    

}


- (void)navTapAction:(UITapGestureRecognizer *)tap

{

    //隐藏、显示导航栏

    BOOL show = !self.viewController.navigationController.navigationBarHidden;

    

    [self.viewController.navigationController setNavigationBarHidden:show animated:YES];

    

    //隐藏、显示电池条

    [[UIApplication sharedApplication] setStatusBarHidden:show withAnimation:UIStatusBarAnimationFade];

}


- (void)tapAction:(UITapGestureRecognizer *)tap

{

    if (self.zoomScale > 1) {

        //缩小

        [self setZoomScale:1 animated:YES];

    }else{

        //放大

        [self setZoomScale:3 animated:YES];

    }

    

}



#pragma mark -UIScrollViewDelegate


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

{

    return _imgView;

}

@end

3、通过响应者链找根视图控制器,创建uiview的类目,在里面写以下方法

-(UIViewController *)viewController

{

    UIResponder *next = self.nextResponder;

    

    do {

        if ([next isKindOfClass:[UIViewController class]]) {

            return (UIViewController *)next;

        }

        next = next.nextResponder;

    } while (next);

    

    return nil;

}






0 0
原创粉丝点击