天天看点

iOS中分段控制器与UIScrollView结合使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

指定根视图:

// 设置window的根视图控制器  

self.window.rootviewcontroller = [[uinavigationcontroller alloc] initwithrootviewcontroller:[rootviewcontroller new]];  

定义属性

#import "rootviewcontroller.h"  

#import "firstviewcontroller.h"  

#import "secondtableviewcontroller.h"  

@interface rootviewcontroller ()<uiscrollviewdelegate>  

@property (nonatomic, strong) uisegmentedcontrol *segmentedcontrol;  

@property (nonatomic, strong) uiscrollview *scrollview;  

@property (nonatomic, strong) firstviewcontroller *firstvc;  

@property (nonatomic, strong) secondtableviewcontroller *secondtvc;  

@end  

@implementation rootviewcontroller  

创建实现:

- (void)viewdidload  

{  

    [super viewdidload];  

    // 适应scrollview  

    self.automaticallyadjustsscrollviewinsets = no;  

    self.segmentedcontrol = [[uisegmentedcontrol alloc] initwithitems:@[@"first", @"second"]];  

    self.navigationitem.titleview = self.segmentedcontrol;  

    [self.segmentedcontrol addtarget:self action:@selector(segmentedcontrolaction:) forcontrolevents:uicontroleventvaluechanged];  

    self.segmentedcontrol.selectedsegmentindex = 0;  

    // 创建scrollview  

    self.scrollview = [[uiscrollview alloc] initwithframe:cgrectmake(0, 64, [uiscreen mainscreen].bounds.size.width, [uiscreen mainscreen].bounds.size.height - 64)];  

    [self.view addsubview:self.scrollview];  

    // 设置scrollview的内容  

    self.scrollview.contentsize = cgsizemake([uiscreen mainscreen].bounds.size.width * 2, [uiscreen mainscreen].bounds.size.height - 64);  

    self.scrollview.pagingenabled = yes;  

    self.scrollview.bounces = no;  

    // 创建控制器  

    self.firstvc = [firstviewcontroller new];  

    self.secondtvc = [[secondtableviewcontroller alloc] initwithstyle:uitableviewstyleplain];  

    // 添加为self的子控制器  

    [self addchildviewcontroller:self.firstvc];  

    [self addchildviewcontroller:self.secondtvc];  

    self.firstvc.view.frame = cgrectmake(0, 0, self.scrollview.frame.size.width, cgrectgetheight(self.scrollview.frame));  

    self.secondtvc.view.frame = cgrectmake([uiscreen mainscreen].bounds.size.width, 0, self.scrollview.frame.size.width, cgrectgetheight(self.scrollview.frame));  

    [self.scrollview addsubview:self.firstvc.view];  

    [self.scrollview addsubview:self.secondtvc.view];  

    // 设置scrollview的代理  

    self.scrollview.delegate = self;  

}  

分段控制器点击方法

- (void)segmentedcontrolaction:(uisegmentedcontrol *)sender  

    [self.scrollview setcontentoffset:cgpointmake(sender.selectedsegmentindex * self.scrollview.frame.size.width, 0) animated:no];  

- (void)scrollviewdidenddecelerating:(uiscrollview *)scrollview  

    nsinteger n = scrollview.contentoffset.x / scrollview.frame.size.width;  

    self.segmentedcontrol.selectedsegmentindex = n;  

first/和second分别为uiviewcontroller和uitableviewcontroller只设颜色即可看效果(这里不做创建)

最终效果:

iOS中分段控制器与UIScrollView结合使用

原文地址:http://blog.csdn.net/qq_31810357/article/details/49611345