iOS Objective-c实现左右滑动切换页面

 更新时间:2022年08月08日 11:22:21   作者:zyw658000  
这篇文章主要为大家详细介绍了iOS Objective-c实现左右滑动切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS Objective-c实现左右滑动切换页面的具体代码,供大家参考,具体内容如下

ScrollView + n个view

1.storyboard布局一个ScrollView

2.拖出两个输出口,定义三个属性

@property (weak, nonatomic) IBOutlet UIScrollView *XMScrollView;
@property (weak, nonatomic) IBOutlet UIView *scrollContentView;


///第一次按下
@property (nonatomic) BOOL isBeginScroll;
///开始结束滑动scroll动画
@property (nonatomic) BOOL isBeginAnimationScroll;
///开始坐标
@property (nonatomic) NSInteger beginX;

3.在viewDidAppear中重新设置scrollContentView的布局宽和tableVIew大小和位置

///遍历布局
    for (NSLayoutConstraint *constraint in self.scrollContentView.constraints) {
       ///判断布局是不是自己想要的 NSLayoutAttribute类型
        if (constraint.firstAttribute == NSLayoutAttributeWidth) {
            
            [constraint setConstant:self.view.frame.size.width*3];
            
        }
     
    }

    [self.tableView1 setFrame:CGRectMake(0, 0, self.view.frame.size.width, scrollViewContentViewFrame.size.height)];
            
    [self.tableView2 setFrame:CGRectMake(self.view.frame.size.width, 0, self.view.frame.size.width, scrollViewContentViewFrame.size.height)];
            
    [self.tableView3 setFrame:CGRectMake(self.view.frame.size.width*2, 0, self.view.frame.size.width, scrollViewContentViewFrame.size.height)];

4.添加scrollView的代理方法

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    ///开始滑动scrollView
    self.isBeginScroll = YES;

    ///开始滑动scrollView的位置
    self.beginX = scrollView.contentOffset.x;;

}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
    ///停下自动滑动scrollView
    [self.XMScrollView setContentOffset:CGPointZero animated:YES];
    ///结束滑动scrollView
    self.isBeginScroll = NO;
    ///开始滑动动画
    self.isBeginAnimationScroll = YES;
    
}

///结束滑动动画
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
    
    if (self.isBeginAnimationScroll) {
        
        CGFloat currentX = scrollView.contentOffset.x;
        
        NSInteger page = currentX/self.view.frame.size.width;
        ///判断到哪一页了,加载数据
        switch (page) {
                
            case 0:
                
  
                break;
                
            case 1:
                

                break;
                
            case 2:
                
    
                break;
                
            default:
                
                break;
                
        }
        
    }
    
    self.isBeginAnimationScroll = NO;

}

5.在viewDidLoad中添加监听

///页面切换ScrollView
    self.XMScrollView.delegate = self;
    
    [self addObserver:self forKeyPath:@"isBeginScroll" options:NSKeyValueObservingOptionNew context:nil];

6.通过监听实现滑动结束后自动滑动

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

    if (!self.isBeginScroll) {
        
        CGFloat offSetX = self.XMScrollView.contentOffset.x;
        
        NSInteger scale = (int)(offSetX/self.view.frame.size.width);
   
        if (offSetX >= self.beginX) {
  
                [self.XMScrollView setContentOffset:CGPointMake((scale+1)*self.view.frame.size.width, 0) animated:YES];
    
        }
        
        if (offSetX < self.beginX) {
            
            if (self.beginX >= self.view.frame.size.width){
       
                [self.XMScrollView setContentOffset:CGPointMake((scale)*self.view.frame.size.width, 0) animated:YES];

            }
            
        }
        
    }
    
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈iOS 数据结构之链表

    浅谈iOS 数据结构之链表

    这篇文章主要介绍了浅谈iOS 数据结构之链表,本文详细的介绍了单链表和双链表,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • iOS中Runtime的几种基本用法记录

    iOS中Runtime的几种基本用法记录

    RunTime顾名思义运行时,就是系统在运行的时候的一些机制,最主要的是消息机制。下面这篇文章主要给大家介绍了关于iOS中Runtime的几种基本用法,文中通过示例代码介绍的非常详细,需要的朋友下面随着小编来一起学习学习吧
    2018-07-07
  • iOS二维码的生成和扫描

    iOS二维码的生成和扫描

    这篇文章主要为大家详细介绍了iOS二维码生成和扫描的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 基于iOS实现图片折叠效果

    基于iOS实现图片折叠效果

    这篇文章主要为大家详细介绍了基于iOS实现图片折叠效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • IOS开发之tableView点击行跳转并带有“显示”更多功能

    IOS开发之tableView点击行跳转并带有“显示”更多功能

    这篇文章给大家介绍通过点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多的功能,代码简单易懂,对ios点击tableview跳转相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • ios实现文件对比的方法

    ios实现文件对比的方法

    这篇文章主要介绍了ios实现文件对比的方法,主要是用到了filemanager,有需要的小伙伴可以参考下。
    2015-05-05
  • IOS与网页JS交互详解及实例

    IOS与网页JS交互详解及实例

    这篇文章主要介绍了 IOS与网页JS交互详解及实例的相关资料,需要的朋友可以参考下
    2016-12-12
  • IOS代码笔记之下拉菜单效果

    IOS代码笔记之下拉菜单效果

    这篇文章主要为大家详细介绍了IOS实现下拉菜单效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现

    iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现

    这篇文章主要介绍了iOS开发中Quartz2D绘图路径的使用以及条纹效果的实现,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • IOS如何在Host App 与 App Extension 之间发送通知

    IOS如何在Host App 与 App Extension 之间发送通知

    这篇文章主要介绍了IOS如何在Host App 与 App Extension 之间发送通知 的相关资料,需要的朋友可以参考下
    2016-03-03

最新评论