2013-03-12 63 views
1

我使用Storyboard,我想复制和添加一个现有的UIView(所有的“孩子”像UILabels)编程到一个ScrollView。因此,首先我为该视图(EventView)创建了一个自定义UIView类,其中我通过用它们的标签识别UILabels的新文本。 现在我想这些EventViews添加到滚动型是这样的:以编程方式在ScrollView中复制现有的UIView? (Storyboard)

CGRect rect = CGRectMake(0.0, 0.0, 320, 320*10); 
UIView *theView = [[UIView alloc] initWithFrame:rect]; 

for (int i = 0; i<10; i++) 
{ 
    CGRect rC = CGRectMake(0.0, 320*i, 320, 320); 

    EventView *dV = [[EventView alloc] initWithFrame:rC]; 
    [dV inWithEvent:allEvents[i]];//Strings for the UILabels 
    [theView addSubview:dV]; 

} 

theScrollView.contentSize = rect.size; 
[theScrollView addSubview:theView]; 
} 

有没有更好的(和工作)的解决方案? 谢谢!

回答

10

复制一个视图或UI对象有一个方法我在这里学到

NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject: viewToBeDuplicated]; 

UIView * newView = [NSKeyedUnarchiver unarchiveObjectWithData: archivedData]; 

现在你可以做你想要用新的观点不管。

+0

非常感谢!工作完美 – Jonathan 2013-03-12 01:06:54

+1

它可能不存档/ unarchive“一切”(或者我可能应该RTFM),因为例如它不会“回收”UIView在我存档它相同的“配置”。除此之外,我有一个CAGradientLayer,在我看来,“newView”(或archivedData)的View完全不透明。 – 2013-07-03 07:04:01

+0

这样做只是:1.归档现有视图,2.将归档视图解除归档为新视图。 – Andrej 2015-12-22 13:51:29