iOS-添加视图而不知道其大小

iOS-添加视图而不知道其大小,ios,objective-c,swift,Ios,Objective C,Swift,我正在尝试以编程方式将子视图添加到视图中。过程如下: [yourView setFrame: CGRectMake(newXOrigin, newYOrigin, newWidth, newHeight)]; 1) 从web获取媒体数组 2) 如果是图片,则构建一个UIImageView并将其添加到视图底部。如果是文本,则构建一个UITextView,并将其添加到视图的底部 3) 重复步骤2,直到阵列结束 问题是: 如果我不知道视图的高度,如何创建视图?似乎要添加视图,我需要指定其框架 如何

我正在尝试以编程方式将子视图添加到视图中。过程如下:

[yourView setFrame: CGRectMake(newXOrigin, newYOrigin, newWidth, newHeight)];
1) 从web获取媒体数组

2) 如果是图片,则构建一个
UIImageView
并将其添加到视图底部。如果是文本,则构建一个
UITextView
,并将其添加到视图的底部

3) 重复步骤2,直到阵列结束

问题是:

  • 如果我不知道视图的高度,如何创建视图?似乎要添加视图,我需要指定其框架

  • 如何将每个视图添加到现有视图的底部

提前感谢,,
Tiago

您始终可以使用零尺寸的框架(
CGRectZero
)创建视图,并在知道后设置其框架。

您始终可以使用零尺寸的框架(
CGRectZero
)创建视图,并在知道后设置其框架。

如果您不知道视图的尺寸,添加视图后,调用
sizeToFit
layoutifneedd
方法。代码如下:

目标-C:

[superView addSubview: view];

[view sizeToFit]; 
[view layoutIfNeeded];
superView.addSubview(view)
view.sizeToFit()
view.layoutIfNeeded()
Swift:

[superView addSubview: view];

[view sizeToFit]; 
[view layoutIfNeeded];
superView.addSubview(view)
view.sizeToFit()
view.layoutIfNeeded()

如果不知道视图的大小,请在添加视图后调用
sizeToFit
layoutifneedd
方法。代码如下:

目标-C:

[superView addSubview: view];

[view sizeToFit]; 
[view layoutIfNeeded];
superView.addSubview(view)
view.sizeToFit()
view.layoutIfNeeded()
Swift:

[superView addSubview: view];

[view sizeToFit]; 
[view layoutIfNeeded];
superView.addSubview(view)
view.sizeToFit()
view.layoutIfNeeded()

我假设您希望初始化视图,然后将其添加为子视图。如果是,您可以执行以下操作:

UIView *yourView = [[UIView alloc] initWithFrame: CGRectZero];
//Note - CGRectZero is equivalent to CGRectMake(0,0,0,0)
[superView addSubview: yourView];
现在,当您准备调整视图的大小时,可以按如下操作:

[yourView setFrame: CGRectMake(newXOrigin, newYOrigin, newWidth, newHeight)];
或者

[yourView sizeToFit];

我假设您希望初始化视图,然后将其添加为子视图。如果是,您可以执行以下操作:

UIView *yourView = [[UIView alloc] initWithFrame: CGRectZero];
//Note - CGRectZero is equivalent to CGRectMake(0,0,0,0)
[superView addSubview: yourView];
现在,当您准备调整视图的大小时,可以按如下操作:

[yourView setFrame: CGRectMake(newXOrigin, newYOrigin, newWidth, newHeight)];
或者

[yourView sizeToFit];

我认为您可以使用UITableView来实现此功能。tableView通常用于显示“N”个项目。您可以创建两个自定义单元格

1用于显示图像

第二个用于显示文本视图


然后根据数组的项目类型,您可以重用这些自定义单元格。

我认为您可以使用UITableView来实现此功能。tableView通常用于显示“N”个项目。您可以创建两个自定义单元格

1用于显示图像

第二个用于显示文本视图


然后根据数组的项目类型,您可以重用这些自定义单元格。

因此我找到了两个问题的答案:

如果我不知道视图的高度,如何创建视图? 从web获取内容后,调用
.layoutifneedd()
以布局视图。现在,您可以使用视图的
contentSize
来绘制它。见下面的例子

如何将每个视图添加到现有视图的底部? 2种方式:

1) 使用UITableView,更简单、更可靠

2) 有一个变量来保存视图堆栈的底部,并在每次添加新视图时更新它。使用此变量可决定在何处添加新视图

以下是代码(带2):


感谢@Dhruv Ramani的提示。

所以我找到了两个问题的答案:

如果我不知道视图的高度,如何创建视图? 从web获取内容后,调用
.layoutifneedd()
以布局视图。现在,您可以使用视图的
contentSize
来绘制它。见下面的例子

如何将每个视图添加到现有视图的底部? 2种方式:

1) 使用UITableView,更简单、更可靠

2) 有一个变量来保存视图堆栈的底部,并在每次添加新视图时更新它。使用此变量可决定在何处添加新视图

以下是代码(带2):

感谢@Dhruv Ramani的提示