ios 控件#iOS#HeminWon首页投稿(暂停使用,暂停投稿)

iOS笔记-UIScrollView

2016-03-16  本文已影响1092人  Developer_Yancy

前言:非常基础的学习笔记,挺久之前(大概两年前吧)刚开始学iOS时记录的,知识点是全的,拿出来回顾一下。

随机配图

如何使用UIScrollView(使用步骤)

self.scrollview.indecatorStyle = UIScrollViewIndeicatorStyleWhite;//白色样式
self.scrollview.showHorizontalScrollIndicator = NO;//不显示水平方向的滚动条
self.scrollview.shoeVericalScrollIndicator = NO;//垂直方向的滚动条

iOS开发屏幕坐标系

UIScrollView常用属性

UIScrollView不能滚动的原因

UIScrollView使用注意点

何监听一个控件

代理(UIScrollViewDelegate

如何监听UIScrollview停止滚动

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"%s = %d", __func__, decelerate);

    // 1.判断是否有惯性, 如果没有惯性手动调用scrollViewDidEndDecelerating告知已经完全停止滚动
    if (decelerate == NO) {
        [self scrollViewDidEndDecelerating:scrollView];
    }
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"停止滚动");
    self.iv.alpha = 1.0;
}

UIScrollview缩放

如何保证被缩放的子控件永远居中

 // 1.判断contentSize的宽高, 是否小于UIScrollView的frame的size
    if (scrollView.contentSize.width < scrollView.bounds.size.width) {

        self.iv1.center = CGPointMake(scrollView.bounds.size.width * 0.5, scrollView.bounds.size.height * 0.5);

    }

    if (scrollView.contentSize.height < scrollView.bounds.size.height) {

        self.iv1.center = CGPointMake(scrollView.bounds.size.width * 0.5, scrollView.bounds.size.height * 0.5);

    }

 // 1.判断contentSize的宽高, 是否小于UIScrollView的frame的size
    if (scrollView.contentSize.width < scrollView.bounds.size.width) {

        // 计算X的值
        CGFloat x =  (scrollView.contentSize.width * 0.5) + ((scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5);

        // 重新设置center
        self.iv1.center = CGPointMake(x, self.iv1.center.y);
    }

    if (scrollView.contentSize.height < scrollView.bounds.size.height) {

        // 计算Y的值
        CGFloat y =  (scrollView.contentSize.height * 0.5) + ((scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5);

        // 重新设置center
        self.iv1.center = CGPointMake(self.iv1.center.x, y);
    }

 CGFloat x = scrollView.contentSize.width < scrollView.bounds.size.width ? (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;
    CGFloat y = scrollView.contentSize.height < scrollView.bounds.size.height ? (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;
    self.iv1.center = CGPointMake(scrollView.contentSize.width * 0.5 + x, scrollView.contentSize.height * 0.5 + y);

图片轮播器Demo

[pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"_currentPageImage"];
[pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"_pageImage"];
[pageControl addTarget:self action:@selector(nextPage) forControlEvents:UIControlEventValueChanged];
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    // 判断是否有惯性, 如果没有就手动调用scrollViewDidEndDecelerating
    if (NO == decelerate) {
        [self scrollViewDidEndDecelerating:scrollView];
    }
}

// 只有有惯性才会调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    // 1.动态计算当前的页码
    // 页码 = UIScrollView的偏移位 / UIScrollView的宽度
    int page = scrollView.contentOffset.x / scrollView.bounds.size.width;
    NSLog(@"page = %d", page);
    // 2.设置当前的页码
    self.pageControl.currentPage = page;

}
// 只要滚动就会调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // 1.动态计算当前的页码
    // 页码 = UIScrollView的偏移位 / UIScrollView的宽度
    CGFloat page = scrollView.contentOffset.x / scrollView.bounds.size.width;

    NSLog(@"page = %f", page + 0.5);
    // 2.设置当前的页码
    self.pageControl.currentPage = (int)(page + 0.5);
}

NSTimer

// 暂停定时器
// 设置timer的开始时间为 遥远的未来 4001年
[self.timer setFireDate:[NSDate distantFuture]];
// 开启定时器
// 设置定时器的开始时间为过去的某一个时间, 也就意味着立刻开始
// 设置定时器从当前时间之后两秒才开始执行
[self.timer setFireDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];

封装思想

上一篇下一篇

猜你喜欢

热点阅读