天天看點

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

繼續閱讀