- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个 iPhone 应用程序,该应用程序在 UITableView 中使用 UIScrollView 做一些奇怪的事情。这是我第一次涉足 iPhone 开发,所以我确信我错过了一些愚蠢的东西。
在每个 UITableViewCell 中,我放入一个基本的 UITableViewCell。其中 UITableViewCell 是一个 Label 和一个 UIScrollView。
标签和 ScrollView 已设置并正常工作,但当它首次显示时,它在 y 轴上比应有的位置向下偏移了约 30 像素,或者由 XIB/NIB 定位。我不会手动移动它。标签显示在正确的位置。在 0,0。 UIScrollView 应显示在 0,22,但显示更接近 0,40。
当我滑动滚动包含的 UITableView 时,所有 UIScrollView 将显示在正确的位置,假设当 UITableView 滚动时 UITableViewCell 离开屏幕。
这是 UITableView.cellForRowAtIndexPath 的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"GalleryRowCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
[cell.layer setMasksToBounds:TRUE];
[cell.layer setCornerRadius:10.0];
Contagion *c = (Contagion *)[self.dataSet objectAtIndex:indexPath.row];
GalleryRowViewController *subView = [[GalleryRowViewController alloc] initWithContagion:c];
[cell.contentView addSubview:subView.view];
subView.contagionName.text = c.name;
subView.contagion = c;
return cell;
}
这是我的 GalleryRowViewController.viewDidLoad 的代码
- (void)viewDidLoad {
[super viewDidLoad];
self.imageScroll.delegate = self;
[self.imageScroll setBackgroundColor:[UIColor blackColor]];
[self.imageScroll setCanCancelContentTouches:NO];
self.imageScroll.indicatorStyle = UIScrollViewIndicatorStyleWhite;
self.imageScroll.clipsToBounds = NO;
self.imageScroll.scrollEnabled = YES;
self.imageScroll.pagingEnabled = NO;
NSInteger x = 0;
CGFloat xPos = 0;
for (x=0;x<=10;x++) {
UIImage *image = [UIImage imageNamed:@"57-icon.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView setBackgroundColor:[UIColor yellowColor]];
CGRect rect = imageView.frame;
rect.size.height = 70;
rect.size.width = image.size.width;
rect.origin.x = xPos;
rect.origin.y = 5;
imageView.frame = rect;
[self.imageScroll addSubview:imageView];
xPos += imageView.frame.size.width+5;
}
[self.imageScroll setContentSize:CGSizeMake(xPos, [self.imageScroll bounds].size.height)];
}
--- 编辑图像 ---
应用程序加载后:http://img809.imageshack.us/img809/4576/screenshot20110927at427.png
将行滚动到屏幕外并返回后:http://img690.imageshack.us/img690/9461/screenshot20110927at428.png
最佳答案
好吧,由于我之前的回答水平太低,所以让我再尝试一下。
首先,我刚刚注意到核心问题,即您为每个单元格使用 View Controller 。引用 Apple 的话,““单个 View Controller 通常管理与单个屏幕的内容相关的 View 。”这也将摆脱你的 XIB(只需手动配置你的 ScrollView ),我打赌这将解决你的问题。
要继续,您的主要选择是是否按照 Scott 的建议创建 ContagionTableViewCell 类。
如果是这样,请按照 Elements 示例,创建 UITableViewCell ContagionTableViewCell 的子类,并具有 ScrollView 、标签 View 和传染性属性。就像他们为元素使用自定义 setter 一样,为传染使用一个自定义 setter ,这样每当分配它时,它也会更新单元格标签(和关联的图片)。
将 imageScroll 代码从 GalleryRowViewController.viewDidLoad 移至 ContagionTableViewCell 初始化代码中。将图像代码放入一个新例程中,该例程将从传染 setter 中调用。
如果不是,则将 GalleryRowView Controller 代码移至 UITableView 中。我建议你看一下 Apple 的 tableViewSuite 中的 cellForRowAtIndexPath,这是关于 subview 的第四个示例。特别是,它显示了这种将单元的创建(当您需要全新的单元时)与配置单元(当重用它时)分开的模式。由于你的scrollView中有10个imageView,你必须决定是否删除所有这些(和/或scrollview),或者只是在重复使用单元格时进入内部并更新它们的图像。
关于iPhone - Objective C - UITableView 内的 UIScrollView 渲染有趣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575419/
抱歉这个奇怪的标题,但是,这正是我所需要的。我知道这是可以做到的,因为我见过其他应用程序这样做。 基本上,我的应用程序有一个启用分页的大 ScrollView ,其中包含一些嵌套的 ScrollVie
我还没有尝试过,但我假设一旦我知道用户想要在子 ScrollView 中滚动,我就必须禁用父 ScrollView 的滚动,对吗? 两个 ScrollView 都是水平滚动的。 如何暂时禁用父级的滚动
我需要实现这个方法: - (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center { 但我不知道如何获得我需要的中心坐标。通常
我想根据 UIAccelerometer 值滚动 ScrollView 。实现这一目标的最佳方法是什么? 最初,我根据获得的加速度计值将内容偏移设置为一个值。然后在每个 scrollViewDidEn
我有一个 UIScrollView,我需要底部淡入透明,这样它就不会突然切断内容。 UIScrollView 的背景是自定义颜色。这是我到目前为止所拥有的,但图层显示为白色,而不是自定义颜色。这就是我
我有一个 UIScrollviews 彼此存在的层次结构。 如何将特定区域的滑动事件重定向到内部 ScrollView ? 最佳答案 如果您将 UIScrollViews 设置为只能在一个轴或另一轴上
在我的应用程序中,我有一个扩展 UIScrollView 并在用户滚动时填充其内容的 View 。但是,如果用户滚动太快,则 UIScrollView 内填充的 View 不会及时创建,您实际上可以看
我有一个包含内容的 UIScroll View 。如果该内容溢出,使 ScrollView 可滚动,我想将 View 的底部设置为某种颜色。如果没有,我想将其设置为不同的颜色。 我的问题是,我不知道如
我有一个 ScrollView ,其中包含一个 UIImageView,以及一个额外的 UIScrollView 和 UIImageView。 我想要实现的是独立缩放和平移每个 ScrollView
类似的问题也有人问过这个,但我的困境其实和他们正好相反。我有一个全屏、分页 UIScrollView,每个页面都是屏幕的大小。在其中,我有一些页面本身就是 UIScrollViews,它们的宽度大于屏
我有一个 UIScrollView 和另一个 UIScrollView 。它们都水平滚动并且具有 pagingEnabled = YES。假设我开始滚动内部 ScrollView 并到达最右边界。如果
我有一个 UIScrollView,里面有一个(自定义)UIView。 在我的 scrollViewDidScroll 方法中,我正在调用 [myCustomView setNeedsDisplay]
我有一个水平滚动的 UICollectionView,其中填充了垂直滚动的 UITableViews(两者都是 UISCrollView 的子类)。当滚动手势开始沿任一方向滚动时,在其减速完成之前不会
iOS 8, swift 。我试图在水平 ScrollView 上创建垂直 ScrollView 。它们都是 UIScrollView。垂直 ScrollView 允许从底部向上滑动 View 。顶部
我需要一个分页的 UIScrollView,它以 UIScreenEdgePanGestureRecognizer 的方式检测屏幕边缘的平移,而不是像 UIPanGestureRecognizer 那
假设我有多个 ScrollView ,并且我希望在任何给定时间只打开其中一个 (scrollView.contentOffset != 0)。因此,当 scroll view 1 打开且 scroll
我在分页 UIScrollView(外部)中的 VC 中有 UIScrollView(内部 - UICollectionView 是诚实的)。两者都是水平的。当我向内滚动到边缘(左侧或右侧)时,它开始
如何在不干扰现有 UIScrollView 的情况下从现有 UIScrollView 获取重复的 UIScrollView。 第一个 ScrollView , UIScrollView *firstS
我的应用程序中有一个点,我删除了一个 ScrollView 并添加了另一个。我希望新 ScrollView 中也能出现上一个 ScrollView 中的相同手势。我尝试过: s
请告诉我如何在类似嵌套进程的 ScrollView 中设置 ScrollView 。 以下代码部分有效。 int x=10; int y=10; for(int i=0; i<5; i++) {
我是一名优秀的程序员,十分优秀!