大家好..。
我想要更改正在执行以下步骤的uipagecontroller指示器(点) color...For。
使用2个方法创建名为PageControl的新类
1.- (void) setCurrentPage:(NSInteger)page
2.- (void) setNumberOfPages:(NSInteger)pages
- (void) setCurrentPage:(NSInteger)page
{
NSLog(@"setCurrentPage");
[super setCurrentPage:page];
NSString* imgActive = [[NSBundle mainBundle] pathForResource:@"activeimage" ofType:@"png"];
NSString* imgInactive = [[NSBundle mainBundle] pathForResource:@"inactive" ofType:@"png"];
for (NSUInteger subviewIndex = 0; subviewIndex < [self.subviews count]; subviewIndex++)
{
UIImageView* subview= [self.subviews objectAtIndex:subviewIndex];
if (subviewIndex == page)
[subview setImage:[UIImage imageWithContentsOfFile:imgActive]];
else
[subview setImage:[UIImage imageWithContentsOfFile:imgInactive]];
subview.frame = CGRectMake(subview.frame.origin.x, subview.frame.origin.y, 10,10);
}
}
- (void) setNumberOfPages:(NSInteger)pages
{
NSLog(@"setNumberOfPages");
[super setNumberOfPages:pages];
NSString* img = [[NSBundle mainBundle] pathForResource:@"inactive" ofType:@"png"];
for (NSUInteger subviewIndex = 0; subviewIndex < [self.subviews count]; subviewIndex++)
{
UIImageView* subview= [self.subviews objectAtIndex:subviewIndex];
[subview setImage:[UIImage imageWithContentsOfFile:img]];
subview.frame = CGRectMake(subview.frame.origin.x, subview.frame.origin.y, 10,10);
}
}我已经有了一个带有pagecontrol和scrollview...Here的视图,我正在做的是从nib中选择uipagecontroller,选择identity inspector,然后选择类名pagecontrol (新创建的类,有两个方法),它可以在滑动图像时改变颜色,但不能用于单击pagecontrol移动到下一页……
我不知道我应该包括什么或什么错误我是doing...please帮助我做这件事…
谢谢..。
发布于 2011-01-10 17:02:26
如果您想在点击点时启用页面滚动,那么您首先需要将您的xib文件中的"value changed“属性与您在代码中设置的操作关联起来。
我已经在我的一个项目中实现了相同的功能,所以它肯定会起作用。
- (IBAction)changePage:(id)sender {
int page = pageControl.currentPage;
CGFloat pageWidth = scrollView.frame.size.width;
pageWidth = scrollView.frame.size.width;
pageControl.currentPage = page;
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
[scrollView scrollRectToVisible:frame animated:YES];
// Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above.
}干杯
发布于 2013-10-05 22:07:39
你上面的代码在iOS 7中崩溃了。我已经找到了解决这个问题的办法。我知道这不是解决问题的方法,但在iOS 8投放市场之前,它肯定是有效的。
崩溃原因:
在iOS 7中,[self.subViews objectAtIndex: i]返回UIView而不是UIImageView,并且setImage不是UIView的属性,应用程序崩溃。我使用下面的代码来解决我的问题。
检查该子视图是UIView(对于iOS7)还是UIImageView(对于iOS6或更早版本)。如果它是UIView,我将在该视图上添加UIImageView作为子视图,瞧,它正在工作,并且不会崩溃。!!
-(void) updateDots
{
for (int i = 0; i < [self.subviews count]; i++)
{
UIImageView * dot = [self imageViewForSubview: [self.subviews objectAtIndex: i]];
if (i == self.currentPage) dot.image = activeImage;
else dot.image = inactiveImage;
}
}
- (UIImageView *) imageViewForSubview: (UIView *) view
{
UIImageView * dot = nil;
if ([view isKindOfClass: [UIView class]])
{
for (UIView* subview in view.subviews)
{
if ([subview isKindOfClass:[UIImageView class]])
{
dot = (UIImageView *)subview;
break;
}
}
if (dot == nil)
{
dot = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, view.frame.size.width, view.frame.size.height)];
[view addSubview:dot];
}
}
else
{
dot = (UIImageView *) view;
}
return dot;
}希望这也能为iOS7解决你的问题。如果Anypone找到了最优的解决方案,请评论。:)
快乐编码
https://stackoverflow.com/questions/4645031
复制相似问题