我做了一个游戏,有关等级选择我在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
答案 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];
}