gpt4 book ai didi

ios - 将从 xib 加载的 View 添加到 UIScrollview 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:38 25 4
gpt4 key购买 nike

我正在尝试将通过 xib 文件创建的 View 添加到 UIScrollview 中。

View 看起来像这样: View setup in Interface Builder

我得到的是: The View added to a UIScrollview in code

我用来将 View 添加到 UIScrollview 的代码(在 Storyboard 中设置)是:

初始化代码:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"SpuelungProtokollView" owner:self options:nil];
HPSpuelungProtokollView * spuelungProtokollView = [subviewArray objectAtIndex:0];
HPSpuelung * vInfo = pInfo;

// setup Infos
// ... this part is not related to the problem ...

[self setContentView:spuelungProtokollView];

然后我在 viewDidLoad: 中执行以下操作:

[[self scrollView] setContentSize:[[self contentView] frame].size];
[[self scrollView] addSubview:[self contentView]];
[[self contentView] layoutIfNeeded];

有没有人遇到过类似的问题 - 知道如何正确地将(正确约束)UIView 添加到 UIScrollview?

提前感谢您的回答!

编辑

一个奇怪的副作用是:如果我将 View 层次结构创建在 viewDidAppear:

中, View 会正确加载

最佳答案

您应该实现 awakeFromNib: 来初始化 View 。如果不是,则可能未正确设置。

NSNibAwaking Protocol Reference: This informal protocol consists of a single method, awakeFromNib. Classes can implement this method to initialize state information after objects have been loaded from an Interface Builder archive (nib file).

所以,我认为您需要类似以下内容的实现:

- (void)awakeFromNib {
[[self scrollView] setContentSize:[[self contentView] frame].size];
[[self scrollView] addSubview:[self contentView]];
[[self contentView] layoutIfNeeded];
return;
}

awakeFromNib 实际上很特别,因为它是 NSNibAwaking informal 协议(protocol)的一部分(基本上意味着您的对象不必符合它)。当一个对象从 nib 文件 (.xib) 加载时,只要它实现了 awakeFromNib 方法,就会在所有 socket 连接后发送此消息。

关于ios - 将从 xib 加载的 View 添加到 UIScrollview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com