美文网首页
UIScrollview滚动视图、UIPangeControl

UIScrollview滚动视图、UIPangeControl

作者: 我不白先生 | 来源:发表于2020-10-17 09:41 被阅读0次

类型:是UIView的子类
提供更大的展示内容的区域,与用户的交互方式就是使用手指的拨动
有时:可以设置超出显示范围的可视内容,然后通过设置,方便用户使用拖拽的手势,查看更大范围的内容显示,本质上提供了一个可滚动的容器

  • 如何使用?

step1:创建scrollView的实例
step2:一定要设置scrollView的frame和contentSize的属性
step3:为滚动视图添加子视图,如果想在滚动视图中查看图片,添加imageView子视图,
step4:将sctollView添加到控制器的view中做子视图,如果想在滚动视图中查看文字,添加label性质的子视图

  • 属性
    frame:设置可视化区域的大小
    contentSize:设置全部内容区域的大小
    contentoffset:设置或查看当前显示的区域左顶点距离全部内容区域左顶点的x和y的距离(实际上是偏移量)
    contentInset:内边距如:sv.contentInset = UIEdgeInsetsMake(50, 20, 0, 0);
    一定要向scrollView内容添加子视图
    其他配置属性
    bounces:设置到达边缘是否弹跳
    paginEnable:设置是否整页滚动(属性可以控制翻页效果)如:_sv.pagingEnabled = YES;
    showsHorizontalScrollIndicator设置是否显示水平滚动提示
    showsVerticalScrollIndicator:设置是否显示垂直滚动提示

滚动四张图片MyViewController.m

#import "MyViewController.h"
@interface MyViewController ()<UIScrollViewDelegate>
@property(nonatomic,strong)UIScrollView *sv;
@property(nonatomic,strong)UIPageControl *pageControl;
@end
@implementation MyViewController
-(UIPageControl *)pageControl
{
    if(!_pageControl){
        _pageControl = [[UIPageControl alloc]init];
        _pageControl.frame = CGRectMake(0, self.view.frame.size.height-20-40, self.view.frame.size.width, 40);
        _pageControl.numberOfPages = 4;
        _pageControl.currentPage = 0;
        //设置当前选中的颜色
        [_pageControl setPageIndicatorTintColor:[UIColor redColor]];
        //设置其他未选中的颜色
        [_pageControl setPageIndicatorTintColor:[UIColor greenColor]];
        [self.view addSubview:_pageControl];
        _pageControl.enabled = NO;
    }
    return _pageControl;
}
-(UIButton*)cteateButton{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.backgroundColor = [UIColor grayColor];
    [button setTitle:@"进入登陆" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(gotoLoginVC:) forControlEvents:UIControlEventTouchUpInside];
    return button;
}
-(void)gotoLoginVC:(UIButton*)sender{
    NSLog(@"跳转到登陆界面");
}
//懒加载
-(UIScrollView *)sv
{
    if(!_sv)
    {
        _sv = [[UIScrollView alloc]init];
        _sv.delegate = self;
        _sv.frame = self.view.frame;
        _sv.contentSize= CGSizeMake(self.view.frame.size.width * 4, self.view.frame.size.height);
        for(NSInteger i = 0; i<4 ;i++)
        {
            UIImageView *iv = [[UIImageView alloc]initWithFrame:CGRectMake(self.view.frame.size.width * i, 0, self.view.frame.size.width, self.view.frame.size.height)];
            NSString *imageName = [NSString stringWithFormat:@"timg%ld.jpg",i];
            iv.image = [UIImage imageNamed:imageName];
            [_sv addSubview:iv];
            if(i == 3){//说明是最后一个 imageView
                UIButton *button = [self cteateButton];
                button.frame = CGRectMake((iv.frame.size.width-200)*0.5, 400, 200, 60);
                [iv addSubview:button];
                //imageView 默认是关闭用户交互的 所以它的子视图button也无法与用户交互
                iv.userInteractionEnabled = YES;
            }
        }
        //隐藏水平滚动条
        _sv.showsVerticalScrollIndicator = NO;
        //取消弹性效果
        _sv.bounces = NO;
        //设置整屏滑动 是针对 frame来说的
        _sv.pagingEnabled = YES;
        [self.view addSubview:_sv];
    }
    return  _sv;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
     [self sv];
    [self pageControl];
}
//实现代理方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //round c 的四舍五入
 NSInteger page =  round(scrollView.contentOffset.x / self.view.frame.size.width);
   self.pageControl.currentPage = page;
    
}

相关文章

网友评论

      本文标题:UIScrollview滚动视图、UIPangeControl

      本文链接:https://www.haomeiwen.com/subject/istopktx.html