我有一个UIScrollView,其中UIViews是通过延迟加载算法添加的。 UIViews包含上一个和下一个图像的预览,因此在某些时候实际视图必须被多次使用(例如,第二张图片的预览现在是NEXT,但是在2页滚动之后它是上一个)。
所有UIView都存储在NSMutableArray中并动态添加。我有代码检查是否已将特定的UIView添加到UIScrollView中。如果没有,代码检查,NSMutableArray中是否需要UIView,如果没有,则创建一个新的...
当我尝试从NSMutableArray获取UIView,更改它在屏幕上的位置并再次添加到UIScrollView时,会出现问题。它只是改变了它的位置,我看到了一些UIViews所必须的白色方块。
是否可以将2个UIViews指针指向一个内存位置或UIImage,但只有一个不同的参数(位置)?将已创建的UIView复制到NSMutable数组两次以使用不同的位置是不是一个好主意? (赢:创建过程只发生一次,丢失:所需的内存量翻倍)。
答案 0 :(得分:0)
从我的观点来看,我没有提供好的解决方案,但这对我有用 - 我刚刚在UIView子类中实现了copy
方法,如下所示:
- (ExhibitPreview *)copy {
ExhibitPreview *exhibitPreview =[[ExhibitPreview alloc] initWithImage:self.image];
exhibitPreview.number.text = self.number.text;
exhibitPreview.author.text = self.author.text;
exhibitPreview.title.text = self.title.text;
exhibitPreview.contentMode = UIViewContentModeScaleAspectFill;
exhibitPreview.clipsToBounds = YES;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGRect frame = CGRectMake(0.0f, 0.0f, screenWidth/2, PREVIEW_HEIGHT);
exhibitPreview.frame = frame;
return exhibitPreview;
}
第一个视图是视图本身,我创建的第二个视图是副本。