Ios 滚动视图滚动时页面控件不更改
我正在尝试向我的滚动视图中添加一个页面控件,并且已经学习了许多web教程,其中大多数都使用与此相同的代码。但是,一旦我将代码放入我的项目中,即使我对代码进行更改以使其工作,它也不会工作。我已经设法使代码在按下页面控件时工作,但是它在页面滚动时不工作。我的问题与类似,尽管答案毫无帮助。这是我的密码: MainViewController.hIos 滚动视图滚动时页面控件不更改,ios,xcode,uiscrollview,uipagecontrol,Ios,Xcode,Uiscrollview,Uipagecontrol,我正在尝试向我的滚动视图中添加一个页面控件,并且已经学习了许多web教程,其中大多数都使用与此相同的代码。但是,一旦我将代码放入我的项目中,即使我对代码进行更改以使其工作,它也不会工作。我已经设法使代码在按下页面控件时工作,但是它在页面滚动时不工作。我的问题与类似,尽管答案毫无帮助。这是我的密码: MainViewController.h @interface MainViewController : UIViewController { UIScrollView *svCollegeMain;
@interface MainViewController : UIViewController
{
UIScrollView *svCollegeMain;
UIScrollView *svCollegePage;
UIPageControl *pcCollege;
UIView *viewP1;
}
@property (nonatomic, retain) IBOutlet UIScrollView* svCollegeMain;
@property (nonatomic, retain) IBOutlet UIScrollView* svCollegePage;
@property (nonatomic, retain) IBOutlet UIPageControl * pcCollege;
- (IBAction)changePage;
@end
和MainViewController.m
@implementation MainViewController
@synthesize svCollegeMain, svCollegePage, pcCollege;
- (void)viewDidLoad
{
[super viewDidLoad];
self.svCollegeMain.contentSize = CGSizeMake(960, 332);
self.svCollegePage.contentSize = CGSizeMake(320, 500);
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
CGFloat pageWidth = 320;
int page = floor((svCollegeMain.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pcCollege.currentPage = page;
}
- (IBAction)changePage
{
CGRect frame;
frame.origin.x = self.svCollegeMain.frame.size.width * self.pcCollege.currentPage;
frame.origin.y = 0;
frame.size = self.svCollegeMain.frame.size;
[self.svCollegeMain scrollRectToVisible:frame animated:YES];
}
#pragma mark - View lifecycle
- (void)viewDidUnload
{
[super viewDidUnload];
self.svCollegeMain = nil;
self.svCollegePage = nil;
self.pcCollege = nil;
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
如果这有什么不同,我的视图是用一个视图设置的,然后在这个视图中设置一个主滚动视图和页面控件,在主滚动视图中设置另一个视图和滚动视图(彼此相邻),最后在第二个滚动视图中设置一个最终视图(都在IB中,不需要太多代码),所有东西都在IB中链接。试试这个
头文件:
@interface DemoPageControlViewController : UIViewController <UIScrollViewDelegate>
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIPageControl *pageControl;
BOOL pageControlUsed;
NSMutableArray *imageArray;
int pageNumber;
}
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *imageArray;
- (IBAction) changePage:(id)sender;
@界面DemoPageControlViewController:UIViewController
{
IBUIScrollView*滚动视图;
IBUIPageControl*pageControl;
使用BOOL-pagecontrol;
NSMutableArray*imageArray;
整数页码;
}
@属性(非原子,保留)UIScrollView*scrollView;
@属性(非原子,保留)UIPageControl*pageControl;
@属性(非原子,保留)NSMutableArray*imageArray;
-(iAction)更改页:(id)发件人;
实施文件:
#import "DemoPageControlViewController.h"
@implementation DemoPageControlViewController
@synthesize pageControl, scrollView, imageArray;
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
imageArray = [[NSMutableArray alloc]init];
[imageArray addObject:@"small_one.png"];
[imageArray addObject:@"small_two.png"];
[imageArray addObject:@"small_three.png"];
[imageArray addObject:@"small_four.png"];
// add the last image to first
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed: [imageArray objectAtIndex:([imageArray count] -1)]]];
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
for(int i = 0; i < imageArray.count; i++)
{
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:i]]];
imageView.frame = CGRectMake((scrollView.frame.size.width * i ) + 320 , 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
}
// add the first image to last
imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:0]]];
imageView.frame = CGRectMake(scrollView.frame.size.width * ([imageArray count]+1), 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([imageArray count]+ 2), self.scrollView.frame.size.height);
[scrollView setContentOffset:CGPointMake(0, 0)];
[self.view addSubview:scrollView];
[self.scrollView scrollRectToVisible:CGRectMake(scrollView.frame.size.width,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO];
}
- (IBAction)changePage :(id)sender
{
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage ;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//pageControlUsed = NO;
NSLog(@"%f", self.scrollView.contentOffset.x);
CGFloat pageWidth = self.scrollView.frame.size.width;
//pageNumber = floor((self.scrollView.contentOffset.x - pageWidth / ([imageArray count]+2)) / pageWidth) + 1 ;
pageNumber = self.scrollView.contentOffset.x / pageWidth;
if(pageNumber == 0)
{
[self.scrollView scrollRectToVisible:CGRectMake((self.scrollView.frame.size.width * [imageArray count]), 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
pageNumber = [imageArray count];
//self.pageControl.currentPage = pageNumber;
}
else if(pageNumber == ([imageArray count]+1))
{
[self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
pageNumber = 1;
//self.pageControl.currentPage = pageNumber;
}
self.pageControl.currentPage = pageNumber - 1;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
}
#导入“DemoPageControlViewController.h”
@DemoPageControlViewController的实现
@综合pageControl、scrollView、imageArray;
-(无效)viewDidLoad
{
[超级视图下载];
CGRect帧;
frame.origin.x=0;
frame.origin.y=0;
frame.size=self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator=否;
scrollView.showsHorizontalScrollIndicator=否;
imageArray=[[NSMutableArray alloc]init];
[imageArray addObject:@“small_one.png”];
[imageArray addObject:@“small_two.png”];
[imageArray addObject:@“small_three.png”];
[imageArray addObject:@“small_four.png”];
//将最后一个图像添加到第一个
UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImageName:[imageArray objectAtIndex:([imageArray count]-1)];
imageView.frame=CGRectMake(0,0,scrollView.frame.size.width,scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[图像视图发布];
对于(int i=0;i
这段代码运行良好。试试这个
头文件:
@interface DemoPageControlViewController : UIViewController <UIScrollViewDelegate>
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIPageControl *pageControl;
BOOL pageControlUsed;
NSMutableArray *imageArray;
int pageNumber;
}
@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *imageArray;
- (IBAction) changePage:(id)sender;
@界面DemoPageControlViewController:UIViewController
{
IBUIScrollView*滚动视图;
IBUIPageControl*pageControl;
使用BOOL-pagecontrol;
NSMutableArray*imageArray;
整数页码;
}
@属性(非原子,保留)UIScrollView*scrollView;
@属性(非原子,保留)UIPageControl*pageControl;
@属性(非原子,保留)NSMutableArray*imageArray;
-(iAction)更改页:(id)发件人;
实施文件:
#import "DemoPageControlViewController.h"
@implementation DemoPageControlViewController
@synthesize pageControl, scrollView, imageArray;
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
imageArray = [[NSMutableArray alloc]init];
[imageArray addObject:@"small_one.png"];
[imageArray addObject:@"small_two.png"];
[imageArray addObject:@"small_three.png"];
[imageArray addObject:@"small_four.png"];
// add the last image to first
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed: [imageArray objectAtIndex:([imageArray count] -1)]]];
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
for(int i = 0; i < imageArray.count; i++)
{
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:i]]];
imageView.frame = CGRectMake((scrollView.frame.size.width * i ) + 320 , 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
}
// add the first image to last
imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:0]]];
imageView.frame = CGRectMake(scrollView.frame.size.width * ([imageArray count]+1), 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release];
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([imageArray count]+ 2), self.scrollView.frame.size.height);
[scrollView setContentOffset:CGPointMake(0, 0)];
[self.view addSubview:scrollView];
[self.scrollView scrollRectToVisible:CGRectMake(scrollView.frame.size.width,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO];
}
- (IBAction)changePage :(id)sender
{
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage ;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//pageControlUsed = NO;
NSLog(@"%f", self.scrollView.contentOffset.x);
CGFloat pageWidth = self.scrollView.frame.size.width;
//pageNumber = floor((self.scrollView.contentOffset.x - pageWidth / ([imageArray count]+2)) / pageWidth) + 1 ;
pageNumber = self.scrollView.contentOffset.x / pageWidth;
if(pageNumber == 0)
{
[self.scrollView scrollRectToVisible:CGRectMake((self.scrollView.frame.size.width * [imageArray count]), 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
pageNumber = [imageArray count];
//self.pageControl.currentPage = pageNumber;
}
else if(pageNumber == ([imageArray count]+1))
{
[self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
pageNumber = 1;
//self.pageControl.currentPage = pageNumber;
}
self.pageControl.currentPage = pageNumber - 1;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
}
#导入“DemoPageControlViewController.h”
@DemoPageControlViewController的实现
@综合pageControl、scrollView、imageArray;
-(无效)viewDidLoad
{
[超级视图下载];
CGRect帧;
frame.origin.x=0;
frame.origin.y=0;
frame.size=self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator=否;
scrollView.showsHorizontalScrollIndicator=否;
imageArray=[[NSMutableArray alloc]init];
[imageArray addObject:@“small_one.png”];
[imageArray addObject:@“small_two.png”];
[imageArray addObject:@“small_three.png”];
[imageArray addObject:@“small_four.png”];
//将最后一个图像添加到第一个