Ios 在UIScrollView上多次放置一个子视图

Ios 在UIScrollView上多次放置一个子视图,ios,objective-c,pointers,uiview,uiscrollview,Ios,Objective C,Pointers,Uiview,Uiscrollview,我有一个UIScrollView,其中UIView是通过延迟加载算法添加的。UIView包含上一幅和下一幅图像的预览,因此在某些情况下,实际视图必须被多次使用(例如,第二幅图片的预览现在是下一幅,但在两页滚动之后是上一幅) 所有UIView都存储在NSMutableArray中,并动态添加。我有检查特定UIView是否已添加到UIScrollView的代码。如果不需要,代码将检查NSMutableArray中是否需要UIView,如果不需要,则创建一个新的UIView 当我尝试从NSMutabl

我有一个UIScrollView,其中UIView是通过延迟加载算法添加的。UIView包含上一幅和下一幅图像的预览,因此在某些情况下,实际视图必须被多次使用(例如,第二幅图片的预览现在是下一幅,但在两页滚动之后是上一幅)

所有UIView都存储在NSMutableArray中,并动态添加。我有检查特定UIView是否已添加到UIScrollView的代码。如果不需要,代码将检查NSMutableArray中是否需要UIView,如果不需要,则创建一个新的UIView

当我尝试从NSMutableArray获取UIView、更改其在屏幕上的位置并再次添加到UIScrollView时,就会出现问题。它只是改变了它的位置,我看到一些UIView必须出现的白色方块


是否可能有2个UIView,指针指向一个内存位置或UIImage,但只有一个不同的参数(位置)?将已创建的UIView复制到NSMutable数组两次以用于不同位置是否是一个好主意?(Win:创建过程只发生一次,丢失:所需的内存量增加了一倍)。

从我的角度来看,我还没有找到好的解决方案,但这对我来说很有效-我只是在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;
}

第一个视图是视图本身,而我创建的第二个视图是副本。

为什么不使用表视图或集合视图呢?不,不能。您需要有两个独立的UIView。