Ios UIScrollView的ContentView中的UIViewController?
我不想使用页面控件,因为当用户水平滚动时,我必须更改按钮 所以我使用UIScrollview和容器视图 跟随 我可以在容器视图中添加子视图控制器,但滚动视图不能使用自动布局滚动 这是我的密码Ios UIScrollView的ContentView中的UIViewController?,ios,objective-c,uiviewcontroller,uiscrollview,Ios,Objective C,Uiviewcontroller,Uiscrollview,我不想使用页面控件,因为当用户水平滚动时,我必须更改按钮 所以我使用UIScrollview和容器视图 跟随 我可以在容器视图中添加子视图控制器,但滚动视图不能使用自动布局滚动 这是我的密码 - (void)viewDidLoad { [super viewDidLoad]; self.array_pageContent = [[NSMutableArray alloc] init]; CallViewController *objGameReviewPageContentViewContr
- (void)viewDidLoad {
[super viewDidLoad];
self.array_pageContent = [[NSMutableArray alloc] init];
CallViewController *objGameReviewPageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CallViewController"];
[self addChildViewController:objGameReviewPageContentViewController];
UIView * view = objGameReviewPageContentViewController.view;
HomeViewController *objHomeViewController= [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
[self addChildViewController:objHomeViewController];
UIView * view1 = objHomeViewController.view;
GroupViewController *objGroupViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"GroupViewController"];
[self addChildViewController:objGroupViewController];
UIView * view2 = objGroupViewController.view;
CallenderViewController *objCallenderViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CallenderViewController"];
[self addChildViewController:objCallenderViewController];
UIView * view3 = objGroupViewController.view;
CasesViewController *objCasesViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CasesViewController"];
[self addChildViewController:objCasesViewController];
UIView * view4 = objGroupViewController.view;
[self.scrollViewContent setPagingEnabled:YES];
[self.scrollViewContent setScrollEnabled:YES];
[self.scrollViewContent setShowsHorizontalScrollIndicator:YES];
[self.scrollViewContent setShowsVerticalScrollIndicator:NO];
[self.scrollViewContent setDelegate:self];
[self.array_pageContent addObject:view];
[self.array_pageContent addObject:view1];
[self.array_pageContent addObject:view2];
[self.array_pageContent addObject:view3];
[self.array_pageContent addObject:view4];
NSInteger pageCount = self.array_pageContent.count;
self.pageControl.currentPage = 0;
self.pageControl.numberOfPages = pageCount;
self.mutableArray_pageContentViews = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < pageCount; ++i) {
[self.mutableArray_pageContentViews addObject:[NSNull null]];
}
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
CGSize pagesScrollViewSize = self.scrollViewContent.frame.size;
self.scrollViewContent.contentSize = CGSizeMake(pagesScrollViewSize.width * self.array_pageContent.count, pagesScrollViewSize.height);
[self loadVisiblePages];
}
- (void)loadPage:(NSInteger)page {
if (page < 0 || page >= self.array_pageContent.count) {
return;
}
UIView *pageView = [self.mutableArray_pageContentViews objectAtIndex:page];
if ((NSNull*)pageView == [NSNull null]) {
CGRect frame = self.scrollViewContent.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0.0f;
UIView *newPageView = nil;
newPageView = [self.array_pageContent objectAtIndex:page];
newPageView.frame = frame;
[self.scrollViewContent addSubview:newPageView];
[self.mutableArray_pageContentViews replaceObjectAtIndex:page withObject:newPageView];
}
}
- (void)purgePage:(NSInteger)page {
if (page < 0 || page >= self.array_pageContent.count) {
return;
}
UIView *pageView = [self.mutableArray_pageContentViews objectAtIndex:page];
if ((NSNull*)pageView != [NSNull null]) {
[pageView removeFromSuperview];
[self.mutableArray_pageContentViews replaceObjectAtIndex:page withObject:[NSNull null]];
}
}
- (void)loadVisiblePages {
CGFloat pageWidth = self.scrollViewContent.frame.size.width;
NSInteger page = (NSInteger)floor((self.scrollViewContent.contentOffset.x * 2.0f + pageWidth) / (pageWidth * 2.0f));
self.pageControl.currentPage = page;
NSInteger firstPage = page - 1;
NSInteger lastPage = page + 1;
for (NSInteger i=0; i<firstPage; i++) {
[self purgePage:i];
}
for (NSInteger i=firstPage; i<=lastPage; i++) {
[self loadPage:i];
}
for (NSInteger i=lastPage+1; i<self.array_pageContent.count; i++) {
[self purgePage:i];
}
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self loadVisiblePages];
}
-(void)viewDidLoad{
[超级视图下载];
self.array_pageContent=[[NSMutableArray alloc]init];
CallViewController*objGameReviewPageContentViewController=[self.storyboard实例化视频控制器的标识符:@“CallViewController”];
[self-addChildViewController:objGameReviewPageContentViewController];
UIView*view=objGameReviewPageContentViewController.view;
HomeViewController*objHomeViewController=[self.storyboard实例化ViewController的标识符:@“HomeViewController”];
[self-addChildViewController:objHomeViewController];
UIView*view1=objHomeViewController.view;
GroupViewController*objGroupViewController=[self.storyboard实例化EviewController标识符:@“GroupViewController”];
[self-addChildViewController:objGroupViewController];
UIView*view2=objGroupViewController.view;
CallenderViewController*objCallenderViewController=[self.storyboard实例化eviewController标识符:@“CallenderViewController”];
[self-addChildViewController:objCallenderViewController];
UIView*view3=objGroupViewController.view;
CasesViewController*objCasesViewController=[self.storyboard实例化eviewcontrollerwhiteIdentifier:@“CasesViewController”];
[self-addChildViewController:objCasesViewController];
UIView*view4=objGroupViewController.view;
[self.scrollViewContent SetPaginEnabled:是];
[self.scrollViewContent SetScrolleEnabled:是];
[self.scrollViewContent设置ShowShorizontalScrollIndicator:是];
[self.scrollViewContent setShowsVerticalScrollIndicator:否];
[self.scrollViewContentSetDelegate:self];
[self.array_pageContent addObject:view];
[self.array_pageContent addObject:view1];
[self.array_pageContent addObject:view2];
[self.array_pageContent addObject:view3];
[self.array_pageContent addObject:view4];
NSInteger pageCount=self.array\u pageContent.count;
self.pageControl.currentPage=0;
self.pageControl.numberOfPages=页面计数;
self.mutableArray_pageContentViews=[[NSMutableArray alloc]init];
对于(NSInteger i=0;i=self.array_pageContent.count){
返回;
}
UIView*pageView=[self.mutableArray_pageContentViews objectAtIndex:page];
如果((NSNull*)页面视图==[NSNull]){
CGRect frame=self.scrollViewContent.frame;
frame.origin.x=frame.size.width*页;
frame.origin.y=0.0f;
UIView*newPageView=nil;
newPageView=[self.array_pageContent objectAtIndex:page];
newPageView.frame=frame;
[self.scrollview内容添加子视图:newPageView];
[self.mutableArray_pageContentViews replaceObjectAtIndex:page with Object:newPageView];
}
}
-(无效)清除页:(NSInteger)页{
if(page<0 | | page>=self.array_pageContent.count){
返回;
}
UIView*pageView=[self.mutableArray_pageContentViews objectAtIndex:page];
如果((NSNull*)页面视图!=[NSNull]){
[pageView从SuperView移除];
[self.mutableArray_pageContentViews replaceObjectAtIndex:page withObject:[NSNull];
}
}
-(无效)加载可视页面{
CGFloat pageWidth=self.scrollViewContent.frame.size.width;
NSInteger页面=(NSInteger)楼层((self.scrollViewContent.contentOffset.x*2.0f+pageWidth)/(pageWidth*2.0f));
self.pageControl.currentPage=page;
NSInteger firstPage=第1页;
NSInteger lastPage=第+1页;
对于(NSInteger i=0;i请遵循下面的链接。这将解决您的问题。此外,请不要编写太多代码,这将很容易用故事板完成
请点击下面的链接。这将解决您的问题。另外,请不要编写太多代码,使用故事板可以轻松完成
从视图层次结构中删除容器视图您的滚动将正常工作
并从下面的代码中复制viewDidLoad()方法
- (void)viewDidLoad {
[super viewDidLoad];
CGFloat width = 0.0;
self.array_pageContent = [[NSMutableArray alloc] init];
CallViewController *objGameReviewPageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CallViewController"];
[self addChildViewController:objGameReviewPageContentViewController];
width = objGameReviewPageContentViewController.view.frame.size.width;
[self.scrollViewContent addSubview:objGameReviewPageContentViewController.view];
// UIView * view = objGameReviewPageContentViewController.view;
HomeViewController *objHomeViewController= [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
CGRect frame = objHomeViewController.view.frame;
frame.origin.x = objGameReviewPageContentViewController.view.frame.size.width;
objHomeViewController.view.frame = frame;
width += frame.size.width;
NSLog(@"%f",width);
[self addChildViewController:objHomeViewController];
[self.scrollViewContent addSubview:objHomeViewController.view];
// UIView * view1 = objHomeViewController.view;
GroupViewController *objGroupViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"GroupViewController"];
frame = objGroupViewController.view.frame;
frame.origin.x = objGameReviewPageContentViewController.view.frame.size.width*2;
objGroupViewController.view.frame = frame;
width += frame.size.width;
NSLog(@"%f",width);
[self addChildViewController:objGroupViewController];
[self.scrollViewContent addSubview:objGroupViewController.view];
// [self addChildViewController:objGroupViewController];
// UIView * view2 = objGroupViewController.view;
CallenderViewController *objCallenderViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CallenderViewController"];
frame = objCallenderViewController.view.frame;
frame.origin.x = objGameReviewPageContentViewController.view.frame.size.width*3;
objCallenderViewController.view.frame = frame;
width += frame.size.width;
NSLog(@"%f",width);
[self addChildViewController:objCallenderViewController];
[self.scrollViewContent addSubview:objCallenderViewController.view];
// [self addChildViewController:objCallenderViewController];
// UIView * view3 = objGroupViewController.view;
CasesViewController *objCasesViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CasesViewController"];
frame = objCasesViewController.view.frame;
frame.origin.x = objGameReviewPageContentViewController.view.frame.size.width*4;
objCasesViewController.view.frame = frame;
width += frame.size.width;
NSLog(@"%f",width);
[self addChildViewController:objCasesViewController];
[self.scrollViewContent addSubview:objCasesViewController.view];
// [self addChildViewController:objCasesViewController];
// UIView * view4 = objGroupViewController.view;
[self.scrollViewContent setPagingEnabled:YES];
[self.scrollViewContent setScrollEnabled:YES];
[self.scrollViewContent setShowsHorizontalScrollIndicator:YES];
[self.scrollViewContent setShowsVerticalScrollIndicator:NO];
[self.scrollViewContent setDelegate:self];
self.scrollViewContent.contentSize = CGSizeMake(width, self.scrollViewContent.frame.size.height);
// [self.array_pageContent addObject:view];
// [self.array_pageContent addObject:view1];
// [self.array_pageContent addObject:view2];
// [self.array_pageContent addObject:view3];
// [self.array_pageContent addObject:view4];
// NSInteger pageCount = self.array_pageContent.count;
//
// self.pageControl.currentPage = 0;
// self.pageControl.numberOfPages = pageCount;
//
// self.mutableArray_pageContentViews = [[NSMutableArray alloc] init];
// for (NSInteger i = 0; i < pageCount; ++i) {
// [self.mutableArray_pageContentViews addObject:[NSNull null]];
// }
}
-(void)viewDidLoad{
[超级视图下载];
CGFloat宽度=0.0;
self.array_pageContent=[[NSMutableArray alloc]init];
CallViewController*objGameReviewPageContentViewController=[self.storyboard实例化视频控制器的标识符:@“CallViewController”];
[self-addChildViewController:objGameReviewPageContentViewController];
宽度=objGameReviewPageContentViewController.view.frame.size.width;
[self.scrollViewContentAddSubView:objGameReviewPageContentViewController.view];
//UIView*view=objGameReviewPageContentViewController.view;
HomeViewController*objHomeViewController=[self.storyboard实例化ViewController的标识符:@“HomeViewController”];
CGRect frame=objHomeViewController.view.frame;
frame.origin.x=objGameReviewPageContentViewController.view.frame.size.width;
objHomeViewController.view.frame=帧;
宽度+=框架尺寸宽度;
NSLog(@“%f”,宽度);
[self-addChildViewController:objHomeViewController];
[self.scrollViewContent addSubview:objHomeViewController.view];
//UIView*view1=objHomeViewController.view;
GroupViewController*objGroupViewController=[self.storyboard实例化EviewController标识符:@“GroupViewController”];
frame=objGroupViewController.view.frame;
frame.origin.x=objGameReviewPageContentViewController.view.frame.size.width*2;
objGroupViewController.view.frame=frame;
宽度+=框架尺寸宽度;
NSLog(@“%f”,wi)