2014-09-24 39 views
0

我有一个UIScrollView,通过延迟加载算法添加UIViews。 UIViews包含了对前一个和下一个图像的预览,所以在某些时候,实际的视图必须被多次使用(例如,第二张图片的预览现在是NEXT,但是在2页滚动之后它是PREVIOUS)。在UIScrollView上多次放置一个SubView

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

当我尝试从NSMutableArray获取UIView,更改它在屏幕上的位置并添加到再次使用UIScrollView。它只是改变了它的位置,我看到了一些UIViews所必须的白色方块。

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

+0

为什么不使用表视图或集合视图呢? – rdelmar 2014-09-24 02:43:39

+1

不,你不能。你需要有2个独立的UIViews。 – 2014-09-24 03:57:16

回答

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; 
} 

第一种观点查看自己和我创建的第二个副本。