2014-04-01 29 views
1

我正在做一个3级水平滚动的选择级别 - 滚动控制三个视图“视图1”“视图2”和“视图3”,我需要对用户造成幻想,我已经放置了3个按钮在每个视图和一半的按钮在每个面的UIview与2个标签一个写“lev”其他“el 2”...如何在滚动视图转到视图2时更改文本标签?

当用户移动到查看2我希望设置标签到“el 2”,并且一旦滚动已经在第2级上定位,我想让标签写上“el 1” - 这会产生错觉,并且速度太快以至于用户不会注意到。

继承人的代码: 此:

[_elone setText:[NSString stringWithFormat:@"Level 2"]]; 

但我不知道放在哪里, 我应该做一个出口,一个动作一个说法?

@interface PagerViewController() 
@property (assign) BOOL pageControlUsed; 
@property (assign) NSUInteger page; 
@property (assign) BOOL rotating; 
- (void)loadScrollViewWithPage:(int)page; 
@end 

@implementation PagerViewController 

@synthesize scrollViewTwo; 
@synthesize pageControlTwo; 
@synthesize pageControlUsed = _pageControlUsed; 
@synthesize page = _page; 
@synthesize rotating = _rotating; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
[self.scrollViewTwo setPagingEnabled:YES]; 
[self.scrollViewTwo setScrollEnabled:YES]; 
[self.scrollViewTwo setShowsHorizontalScrollIndicator:NO]; 
[self.scrollViewTwo setShowsVerticalScrollIndicator:NO]; 
[self.scrollViewTwo setDelegate:self]; 

} 

- (void)viewWillAppear:(BOOL)animated { 
[super viewWillAppear:animated]; 

for (NSUInteger i =0; i < [self.childViewControllers count]; i++) { 
    [self loadScrollViewWithPage:i]; 
} 

self.pageControlTwo.currentPage = 0; 
_page = 0; 
[self.pageControlTwo setNumberOfPages:[self.childViewControllers count]]; 

UIViewController *viewController = [self.childViewControllers objectAtIndex:self.pageControlTwo.currentPage]; 
if (viewController.view.superview != nil) { 
    [viewController viewWillAppear:animated]; 
} 

self.scrollViewTwo.contentSize = CGSizeMake(scrollViewTwo.frame.size.width * [self.childViewControllers count], scrollViewTwo.frame.size.height); 
} 

- (void)loadScrollViewWithPage:(int)page { 
if (page < 0) 
    return; 
if (page >= [self.childViewControllers count]) 
    return; 

// replace the placeholder if necessary 
UIViewController *controller = [self.childViewControllers objectAtIndex:page]; 
if (controller == nil) { 
    return; 
} 

// add the controller's view to the scroll view 
if (controller.view.superview == nil) { 
    CGRect frame = self.scrollViewTwo.frame; 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    controller.view.frame = frame; 
    [self.scrollViewTwo addSubview:controller.view]; 
} 

} 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
_pageControlUsed = NO; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
_pageControlUsed = NO; 
} 

- (IBAction) changePage :(id) sender { 

} 

这是如何完成的?

+0

等待,我想我必须做的是延长标签,哎呀,再等下去!帮帮我?请输入 – Ricky

+1

使此VC成为滚动视图的委托,并实现scrollViewDidScroll。在那里,您可以检查scrollView.contentOffset并将其与视图原点进行比较。 – danh

+0

这里有一个有用的教程(查看下面的分页示例):http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content –

回答

0

//落实UIScrollView的委托方法

-(void)scrollViewDidScroll:(UIScrollView *)sender 

{ 

CGFloat pageWidth = yourScrollView.frame.size.width; 
int currentPage = floor((yourScrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 

if (currentPage != featureVenPageControll.currentPage) 
{ 
    [_elone setText:[NSString stringWithFormat:@"Level 2"]]; 
} 

} 
+0

嘿,已经使用了这个我可以使它工作,_btnIllusionLeft只有当它在View2上,我需要它被设置隐藏设置隐藏在视图1上,只出现在视图2和3上,_btnIllusionRight没有隐藏,当页面进入View3。事实上,我需要它隐藏在视图3之前,甚至到达那里滚动... 另一件事,一旦它从视图2离开它不会恢复正常... – Ricky