如何从滚动视图中隐藏和显示按钮?

时间:2014-04-02 18:02:39

标签: ios objective-c

我做了一个游戏,有关等级选择我在3个不同的控制器上有3个等级和3个视图

现在我已经在滚动视图的每一侧放置了2 - 1/4的按钮,左侧是一个,右侧是一个!

当游戏的用户处于第1级和第34级时,那就是View1"左侧的按钮需要隐藏,只有当它在View2和View 3上时才显示 - 右侧的View3上的按钮也是如此!

这是怎么做到的?

这些按钮的插座是leftIllusion& rightIllusion

UIViews的代码:

@implementation ViewController

@synthesize View1;
@synthesize View2;
@synthesize View3;

- (void)viewDidLoad
{
// Do any additional setup after loading the view, typically from a nib.
[super viewDidLoad];

[self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View1"]];
[self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View2"]];
[self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"View3"]];

}

导入滚动文件的代码.h:

#import "PagerViewController.h"

@interface ViewController : PagerViewController {

}

@property (strong, nonatomic) IBOutlet UIView *View1;
@property (strong, nonatomic) IBOutlet UIView *View2;
@property (strong, nonatomic) IBOutlet UIView *View3;

@end

1 个答案:

答案 0 :(得分:1)

UIScrollView实例具有属性 contentOffset ,可以帮助您检测现在正在显示的视图(view1,view2,view3)。我发布了示例代码片段,它可以帮助我确定 scrollView 的页码。

  - (NSInteger)pageNumber
     {
        static NSInteger previousPage = 0;
        CGFloat pageWidth = self.scrollView.frame.size.width;
        float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
        NSInteger page = lround(fractionalPage);

        NSLog(@"page number %d",page);

        if (previousPage != page) {
            previousPage = page;
            /* Page did change */
           //put here your hide/show buttons logics
        }
        return page;
    }

插入这些行的最佳位置是 scrollView 委托的方法-(void)scrollViewDidEndDecelerating:。每次滚动动作停止时,滚动视图都会调用此方法。

所以你的最终版本看起来像是:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender
{
   [self pageNumber];
}