gpt4 book ai didi

iphone - 计算UIScrollView的位置

转载 作者:行者123 更新时间:2023-11-29 04:25:42 26 4
gpt4 key购买 nike

我正在开发一个简单的PDF阅读器,在底部我有一个包含所有页面的UIScrollView,在中间我有一个标签,当你滚动时应该显示页码通过。

但我不知道如何计算确切的位置并查看中间是什么页面。我还有两种类型的 PDF,一种是双页 PDF,另一种是单面 PDF。

这就是我在 ScrollView 中绘制它们的方式

NSInteger xPos = 20;
for(int i = 0; i < [pdf numberOfPages]; i++)
{
ThumbViewController *tmpThumb = [[ThumbViewController alloc] initWithNibName:nil bundle:nil page:[NSString stringWithFormat:@"%i", i + 1] andPDF:pdf];

// SINGLE SIDE PDF
if([_issue.presentation isEqualToString:@"1"])
{
tmpThumb.view.frame = CGRectMake(xPos, 5, 150, 200);

xPos += 200;
}
// DOUBLE SIDE PDF
else
{
tmpThumb.view.frame = CGRectMake(xPos, 5, 150, 200);

// Draw double pages
if((i % 2) == 1)
{
xPos += 105;
}
else
{
xPos += 140;
}
}

[_scrollView addSubview:tmpThumb.view];

[tmpThumb release];
}

这给了我这些漂亮的缩略图: enter image description here enter image description here

但是我陷入了下一部分,当滚动 UIScrollView 时,我找不到任何关于如何计算哪个页面位于 View 中间的好方法,目前我尝试过这个:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// Calculate what page is in the middle
NSInteger contentSize = scrollView.contentSize.width / [_readerModel.pdf numberOfPages];
NSInteger pageNumber = floor(scrollView.contentOffset.x / contentSize);

// Single side
if([_issue.presentation isEqualToString:@"1"]) pageNumber = floor(scrollView.contentOffset.x / contentSize);

NSLog(@"%d / %d", contentSize, pageNumber);

_thumbnailPopup.titleLabel.text = [_readerModel getTitleForPage:pageNumber inIssue:_readerModel.currentIssue];
_thumbnailPopup.pageLabel.text = [NSString stringWithFormat:@"%d", pageNumber];
}

正如您从图片中看到的,页面并不真正匹配(它们在第二张图片中意外匹配,但当您进一步滚动时它们不匹配)有人有类似的经验吗?

最佳答案

我认为你需要计算单个页面的大小并将scrollView.contentSize.width除以该大小。

CGFloat sizeOfAThumbnailPage = ((spaceLeftOfThumbnailPage / 2.0f) + sizeOfThumbnailPage +(spaceRightOfThumbnailPage / 2.0f));

NSInteger pageNearestMiddle = (NSInteger)(roundfscrollView.contentSize.width / sizeOfAThumbnailPage));

关于iphone - 计算UIScrollView的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com