- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在使用页面控件的 scrollView 中有一个 imageView 现在我想将不同的图像显示到同一个 imageView。页面控件 ScrollView 自动滚动。它显示第一张图像但不显示其他图像。我使用的代码如下:
// -----------------------------------------------------------------------------
// 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, 240, 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;
}
但加载 View 时只显示第一页
之后,ScrollView 委托(delegate)方法将用于移动您的页面控件....
但停止调用这些
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];
它会重复创建图像
关于ios - 如何在 pagecontrol 的 ScrollView 中将图像应用到 imageView。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6262135/
在 Flutter 中,我无法将相同的 PageController 分配给多个 PageView。所以需要使用两个或多个 PageController。 我需要同步我的 ViewPage,这样当我互
在我的应用程序中,我想将 pagecontrol 可选页面(点)颜色更改为棕色而不是白色。 我知道可以更改页面控件的背景颜色。但是如何将可选页面(点)颜色更改为其他颜色? 最佳答案 UIPageCon
我想以编程方式将 UIPageControl 项添加到我的 View Controller 中。 self.view 属性包含一个具有以下属性的 UIScrollView: scrollView =
是否可以水平方向左对齐选项卡标题? 最佳答案 不确定您到底想要什么,但您可以将 OwnerDraw 属性设置为 True。并使用OnDrawTab事件自己绘制。 关于delphi - PageCont
我正在尝试将当前页面的点缩放为大于未“选择”的点。 我正在使用 ScrollView 委托(delegate)来确定哪个页面是当前的。 目前点的大小没有变化。 我将如何实现这一目标? func scr
http://apptech.next-munich.com/2010/04/customizing-uipagecontrols-looks.html 上面的网址中有一些用于自定义 UIPageCo
Delphi 7,带有选项卡的 TPageControl。如果我单击选项卡标题,它就会成为焦点(绘制虚线框)。这里不需要,我想始终保持选项卡内容的焦点(在页面控件内)。如何禁用选项卡标题上的焦点? 例
我的表单上有一个 PageControl,我希望检测用户何时选择另一个选项卡。 我该怎么做?我使用的是 Delphi 7。 我没有找到任何事件,浪费时间开发自己的页面控件并不完全是我打算做的。 最佳答
我正在寻找(我认为)可以在 TPageControl 组件的 OnDrawTab 事件中使用的 Windows API,以在我选择的选项卡上显示灰色文本。我过去曾经这样做过,根据内存,这就是我所做的(
Storyboard和 pageControl 作为页面 Controller 也呈现 View Controller 的序列有什么区别? 最佳答案 页面控件在 ScrollView 中添加多个 Vi
我正在尝试为 iOS Developer PageControl Sample 实现建议的优化。 .这是我在 PhoneContentController 中使用的代码: // A possible
我尝试在viewController中添加pageControl以显示当前页和总页。 我在viewController内有collectionView。但是如果我在 viewController 中添
我正在使用scrollview和pagecontroll来滚动某些内容。我使用了下面的代码,但我希望页面 Controller 的点显示在 View 上。我尝试将其放在所有 View 和 Scroll
我已经使用界面生成器向 titleView 添加了一个 pageControl。问题是它根本不居中。实际上,我可以在 leftBarButton 文本之后做很多空白,但这并不理想。解决方案是什么? 最
如果 pageControl.numberOfPages > 15 ,我想让我的 PageControl 显示两行 我已经搜索了pageContro 的所有功能,但没有找到任何功能可以处理这种情况。如
我正在尝试将当前页面的点缩放为大于未“选中”的点。 我正在使用 ScrollView 委托(delegate)来确定哪个页面是当前页面。 目前点的大小没有变化。 我将如何实现这一目标? func sc
我有 3 个页面 - A ViewController、B ViewController 和 C ViewController。 还有一个 PageViewController 控制水平滚动。 Pag
我正在使用 UIPageViewController 来显示其他 4 个 ViewController。所以我的 RootViewController 是一个 PageViewController ,
我似乎在 1 个屏幕上显示 2 个 PageView 时遇到问题。下面是我的应用程序:日历周时间轴是 PageView,它下面的内容也需要是 PageView。 现在两个 PageViews 都需要相
我目前使用的是 Delphi 7。 我有一个主表单,它有一个带有 5 个选项卡的 PageControl。我正在寻找一种方法将这些选项卡从页面控件中“分离”,并将它们单独移动到一个新的表单(即运行时创
我是一名优秀的程序员,十分优秀!