UIScrollView

2016-05-02  本文已影响613人  Barry_小闪

关于UIScrollView左右滚动判断
UIScrollView 实践经验

目录

补充:ScrollView的底部被标签栏控制器(tabBar)遮挡的解决办法

//设置ScrollView高度减去113(导航栏高度64加标签栏高度49)
self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.width, self.view.heigh t- 113)];
如果需要scrollView遮盖,某些可以点击事件的控件,当scrollView移开控件是还可以获取点击事件,需要设置

1.scrollView的高度不能遮盖控件

2.下面这个属性可以让子视图的移动边距不受ScrollView的边距影响,可以显示出去

//ScrollView的子视图不受边距的影响,可以超出
scrollViewscrollView.layer.masksToBounds = NO;

注意事项

[self.scrollView.subviews firstObject];
[self.scrollView.subviews lastObject];

上面两个方法,可能会获取到滑块控件;

UIScrollView的常见属性

contentSize 内容的尺寸:
  这个属性用来表示UIScrollView滚动的位置
- 仅上下移动,设置高度
- 仅左右移动,设置宽度
  @property (nonatomic) CGPointcontentOffset;
  self.scrollView.contentSize 

contentOffset 设置偏移量:
  这个属性用来表示UIScrollView滚动的位置
  @property (nonatomic) CGSizecontentSize;
  self.scrollView.contentOffset

contentInset 增加额外的滚动区域:
  这个属性能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住
@property(nonatomic) UIEdgeInsets contentInset;
self.scrollView.contentInset = UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)

UIScrollView的其他属性

设置UIScrollView是否需要弹簧效果
@property(nonatomic) BOOL bounces;

设置UIScrollView是否能滚动
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;

是否显示水平滚动条
@property(nonatomic) BOOL showsHorizontalScrollIndicator;

是否显示垂直滚动条
@property(nonatomic) BOOL showsVerticalScrollIndicator;

ScrollView的子视图不受边距的影响,可以超出scrollView
scrollView.layer.masksToBounds = NO;

隐藏Cell之间的分割线
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

UIScrollView设置代理

设置代理
  self.scrollview.delegate = self;
设置协议
  @interface ViewController () <UIScrollViewDelegate>

UIScrollViewDelegate协议方法

滚动相关


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

    //获取scrollView的偏移量
    CGPoint point = scrollView.contentOffset;
    NSLog(@"正在滚动:%@", NSStringFromCGPoint(point));
}

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

    NSLog(@"开始拖拽"); 
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    
    NSLog(@"已经停止滚动");
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{

    NSLog(@"停止拖拽:%@", NSStringFromCGPoint(*targetContentOffset));
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

    NSLog(@"已经停止拖拽");
}

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

    NSLog(@"开始减速");
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
  
这个停止是停止通过setContentOffset:animated:这个方法产生的动画
    NSLog(@"停止滚动动画");
}

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{

    return YES;  
}


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

    NSLog(@"回到顶部");
}

缩放相关

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

    return [scrollView viewWithTag:100];
}
上一篇 下一篇

猜你喜欢

热点阅读