ios – 如何在pagecontrol的滚动视图中将图像应用于imageView.

ios – 如何在pagecontrol的滚动视图中将图像应用于imageView.,第1张

概述我在scrollView中使用页面控件有一个imageView现在我想在同一个imageView中显示不同的图像.页面控制滚动视图自动滚动.它显示第一个图像,但没有显示其他图像.我使用的代码如下: // -----------------------------------------------------------------------------// loadScrollViewWit 我在scrollVIEw中使用页面控件有一个imageVIEw现在我想在同一个imageVIEw中显示不同的图像.页面控制滚动视图自动滚动.它显示第一个图像,但没有显示其他图像.我使用的代码如下:

// -----------------------------------------------------------------------------// loadScrollVIEwWithPage- (voID)loadScrollVIEwWithPage:(int)page {    if ( page < 0 ) return;    if ( page >= kNumberOfPages ) return;}// -----------------------------------------------------------------------------// scrollVIEwDIDScroll- (voID)scrollVIEwDIDScroll:(UIScrollVIEw *)sender {    if ( pageControlUsed )     {        // do nothing - the scroll was initiated from the page control,not the user dragging        return;    }    // Switch the indicator when more than 50% of the prevIoUs/next page is visible    CGfloat pageWIDth = mScrollVIEw.frame.size.wIDth;    int page = floor((mScrollVIEw.contentOffset.x - pageWIDth / 2) / pageWIDth) + 1;    mPageControl.currentPage = page;    // load the visible page and the page on either sIDe of it (to avoID flashes when the user starts scrolling)    [self loadScrollVIEwWithPage:page - 1];    [self loadScrollVIEwWithPage:page];    [self loadScrollVIEwWithPage:page + 1];}// -----------------------------------------------------------------------------// scrollVIEwWillBeginDragging// At the begin of scroll dragging,reset the boolean used when scrolls originate from the UIPageControl- (voID)scrollVIEwWillBeginDragging:(UIScrollVIEw *)scrollVIEw {    pageControlUsed = NO;    [mTimer invalIDate];}// ----------------------------------------------------------------// scrollVIEwDIDEndDecelerating// At the end of scroll animation,reset the boolean used when scrolls originate from the UIPageControl- (voID)scrollVIEwDIDEndDecelerating:(UIScrollVIEw *)scrollVIEw {    pageControlUsed = NO;}- (ID)initWithNibname:(Nsstring *)nibnameOrNil                bundle:(NSBundle *)nibBundleOrNil                   tag:(NSInteger)inTag            noOfPoses:(NSInteger)inNoOfPoses            imagename:(NSArray *)inImagenameArr{    self = [super initWithNibname:@"TIphonePosesDetailVIEw" bundle:nibBundleOrNil];    if (self)     {        mTag = inTag;// tag of the image taken from prevIoUs controller        mNoOfPoses = inNoOfPoses;        kNumberOfPages = mNoOfPoses;        if ( inImagenameArr != nil )         {            mimgnameArr = [inImagenameArr retain];// contains images        }        NSLog(@"Image Array%@",mimgnameArr);    }    return self;}// -----------------------------------------------------------------------------// vIEwDIDLoad- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];    mScrollVIEw.delegate = self;    mScrollVIEw.showsHorizontalScrollindicator = FALSE;    [mScrollVIEw setContentSize:CGSizeMake(1000,464)];    [mScrollVIEw setFrame:CGRectMake(45,69,240,226)];    // Setting frame    mStartPoint = CGPointMake(0,0);    [mPrevimgVIEw setimage:[self getimageFromname:[mimgnameArr objectAtIndex:mTag]]];    [mPrevimgVIEw setFrame:CGRectMake(mStartPoint.x,mStartPoint.y,226)];    // a page is the wIDth of the scroll vIEw    mScrollVIEw.pagingEnabled = YES;    mScrollVIEw.contentSize = CGSizeMake(mScrollVIEw.frame.size.wIDth * kNumberOfPages,mScrollVIEw.frame.size.height);    mScrollVIEw.showsHorizontalScrollindicator = NO;    mScrollVIEw.showsverticalScrollindicator = NO;    mScrollVIEw.scrollsTotop = NO;    mPageControl.numberOfPages = kNumberOfPages;    mPageControl.currentPage = 0;    // pages are created on demand    // load the visible page    // load the page on either sIDe to avoID flashes when the user starts scrolling    [self loadScrollVIEwWithPage:0];    [self loadScrollVIEwWithPage:1];    mTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:2] interval:2.0 target:self selector:@selector(scrollautomatically:) userInfo:nil repeats:YES];    [[NSRunLoop currentRunLoop] addTimer:mTimer forMode:NSDefaultRunLoopMode];}// -----------------------------------------------------------------------------// scrollautomatically- (voID)scrollautomatically:(ID)sender{      if ( mCurrentPage < [mPageControl numberOfPages] )    {        mCurrentPage ++;        mTag ++;        [mPrevimgVIEw setimage:[self getimageFromname:[mimgnameArr objectAtIndex:mTag]]];        mStartPoint.x += 250 + mPrevimgVIEw.frame.size.wIDth;     }    else     {        mCurrentPage = 0;    }    [self loadScrollVIEwWithPage:mCurrentPage - 1];    [self loadScrollVIEwWithPage:mCurrentPage];    [self loadScrollVIEwWithPage:mCurrentPage + 1];    // update the scroll vIEw to the appropriate page    CGRect frame = mScrollVIEw.frame;    frame.origin.x = frame.size.wIDth * mCurrentPage;    frame.origin.y = 0;    [mScrollVIEw scrollRectToVisible:frame animated:YES];}
解决方法 当您调用此方法时,通过动态修复其坐标来加载所有图像.您可以使用缓存加载图像,这将节省加载时间并可用 here

- (voID)loadScrollVIEwWithPage:(int)page {    if ( page < 0 ) return;    if ( page >= kNumberOfPages ) return;}

但只在加载视图时显示第一页

之后,ScrollVIEw委托方法将用于移动页面控件….

但是停止打电话给这些

[self loadScrollVIEwWithPage:page - 1];    [self loadScrollVIEwWithPage:page];    [self loadScrollVIEwWithPage:page + 1];

它会反复创建图像

总结

以上是内存溢出为你收集整理的ios – 如何在pagecontrol的滚动视图中将图像应用于imageView.全部内容,希望文章能够帮你解决ios – 如何在pagecontrol的滚动视图中将图像应用于imageView.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存