【问题标题】:Duplicate existing UIView in a ScrollView programmatically? (Storyboard)以编程方式在 ScrollView 中复制现有的 UIView? (故事板)
【发布时间】:2013-02-27 09:01:26
【问题描述】:

我使用 Storyboard,并且我想以编程方式复制现有 UIView(以及所有“子项”,如 UILabels)并将其添加到 ScrollView。因此,首先我为该视图创建了一个自定义 UIView-Class (EventView),在其中我通过使用标签标识它们来初始化 UILabel 的新文本。 现在我想将这些 EventViews 添加到这样的 Scrollview 中:

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

是否有更好(且有效)的解决方案? 谢谢!

【问题讨论】:

    标签: objective-c xcode uiview uiscrollview storyboard


    【解决方案1】:

    要复制视图或 ui 对象,我在这里学到了一种方法

     NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject: viewToBeDuplicated];
    
     UIView * newView = [NSKeyedUnarchiver unarchiveObjectWithData: archivedData];
    

    现在您可以使用新视图为所欲为。

    【讨论】:

    • 它可能不会存档/取消存档“所有内容”(或者我可能应该使用 RTFM),因为例如它不会在我存档的相同“配置”中“带回”UIView。除其他外,我有一个 CAGradientLayer,在我看来,“newView”(或 archivedData)的视图完全不透明。
    • 这样做只是:1. 存档现有视图,2. 将存档视图取消存档为新视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2017-07-30
    相关资源
    最近更新 更多