簡體   English   中英

滾動視圖與分頁

[英]Scrollview with paging

我在故事板上放置了一個滾動視圖,我也啟用了分頁,我為滾動視圖制作了出口,我以編程方式添加了4個uiview。現在我需要水平地在那4個uiview中進行分頁。請幫助我做...預先感謝

這是我的代碼

- (void)scrollingView
{
    UIView *pageView1 = [[UIView alloc]init];    
    pageView1.frame = CGRectMake(0,0,self.scrollView.frame.size.width,self.scrollView.frame.size.height);    

    pageView1.backgroundColor = [UIColor blueColor];
    [self.scrollView addSubview:pageView1];

    UIView *pageView2 = [[UIView alloc]init];
    pageview2.frame = CGRectMake(0,0,self.scrollView.frame.size,width,self.scrollView.frame.size.height);

    pageView2.backgroundColor =[UIColor GrayColor];
    [self.scrollView addSubview:pageView2];
}
xPosition = 0;
    for (int i = 0; i<3; i++)
    {
        scrollView.clipsToBounds = YES;
        //Views
        UIView *views = [[UIView alloc]initWithFrame:CGRectMake(xPosition, 0, selfView.frame.size.width, scrollView.frame.size.height)];
        views.clipsToBounds = YES;

        [arrayOfViews addObject:views];
        xPosition += selfView.frame.size.width;

        [scrollView addSubview:views];
    }
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * arrayOfViews.count, scrollView.frame.size.height);


並實現scrollview委托方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat pageWidth = self.scrollView.frame.size.width;
    float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
    NSInteger page = lround(fractionalPage);
    self.pageCnt.currentPage = page;
}
-(void)viewDidLayoutSubviews
{
    UIImage *image1=[UIImage imageNamed:@"1.jpeg"];
    UIImage *image2=[UIImage imageNamed:@"2.jpeg"];
    UIImage *image3=[UIImage imageNamed:@"7.jpeg"];
    UIImage *image4=[UIImage imageNamed:@"6.jpeg"];
  //  UIImage *image5=[[UIImage alloc]init];
    NSArray *imagesArray=[[NSArray alloc]initWithObjects:image1,image2,image3,image4,nil];

    for (int i=0; i<=3; i++) {
        UIImageView *imgView=[[UIImageView alloc]init];
        imgView.backgroundColor=[UIColor grayColor];
        imgView.contentMode=UIViewContentModeScaleToFill;
        imgView.alpha=0.5f;
        imgView.frame=CGRectMake(i*self.scrollViewSlider.bounds.size.width, 0, self.scrollViewSlider.bounds.size.width, self.scrollViewSlider.bounds.size.height);

        [imgView setImage:imagesArray[i]];

        [self.scrollViewSlider addSubview:imgView];
    }
    self.scrollViewSlider.pagingEnabled=TRUE;
    [self.scrollViewSlider setContentSize:CGSizeMake(imagesArray.count * self.scrollViewSlider.bounds.size.width, self.scrollViewSlider.bounds.size.height)];




}



- (void) scrollViewDidEndDecelerating: (UIScrollView *) __unused scrollView
{
    CGFloat pageWidth = self.scView.frame.size.width;
    self.pageControl.currentPage = (self.scView.contentOffset.x + pageWidth / 2) / pageWidth;
}

試試這個,你會得到它的工作

頭文件:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;

@property (weak, nonatomic) IBOutlet UIScrollView *scView;


@end

實現方式:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController





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




-(void)viewDidLayoutSubviews
{

    NSArray *imagesArray=[NSArray arrayWithObjects:
                          [UIColor colorWithRed:246/255.0 green:155/255.0 blue:0/255.0 alpha:1],
                          [UIColor colorWithRed:129/255.0 green:195/255.0 blue:29/255.0 alpha:1],
                          [UIColor colorWithRed:62/255.0 green:173/255.0 blue:219/255.0 alpha:1],
                          [UIColor colorWithRed:229/255.0 green:66/255.0 blue:115/255.0 alpha:1],
                          [UIColor colorWithRed:148/255.0 green:141/255.0 blue:139/255.0 alpha:1],nil];

    for (int i=0; i<imagesArray.count; i++) {
        UIView *containerView=[[UIView alloc]init ];
        //containerView.backgroundColor=[UIColor redColor]
        containerView.backgroundColor=imagesArray[i % imagesArray.count];
        containerView.contentMode=UIViewContentModeScaleToFill;
        containerView.alpha=0.5f;
        containerView.frame=CGRectMake(i*self.scView.bounds.size.width, 0, self.scView.bounds.size.width, self.scView.bounds.size.height);

        //[imgView setImage:imagesArray[i]];

       [self.scView addSubview:containerView];
    }
    self.scView.pagingEnabled=TRUE;
    NSLog(@"%ld",imagesArray.count);
    NSLog(@"%ld",imagesArray.count);
    [self.scView setContentSize:CGSizeMake(imagesArray.count * self.scView.bounds.size.width, self.scView.bounds.size.height)];




}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) scrollViewDidEndDecelerating: (UIScrollView *) __unused scrollView
{

    CGFloat pageWidth = self.scView.frame.size.width;
    self.pageControl.currentPage = (self.scView.contentOffset.x + pageWidth / 2) / pageWidth;

    NSLog(@"%f",pageWidth);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM