gpt4 book ai didi

ios - 如何在 iOS 中创建具有动态内容的 View ?

转载 作者:行者123 更新时间:2023-12-01 19:05:58 26 4
gpt4 key购买 nike

我认为我遇到了一个问题,因为我缺乏对 iOS 平台的了解。我有一个 View Controller User Profile .主视图具有下一个结构:ScrollView其中包含一个 subview 和这个 UIView有 7 UIViewsUILabels , UItextViews , UIImageViews等。它们中的每一个都显示有关用户的特定信息。问题 - 此 View 的数据是从服务器获取的,并且可能不同。例如,我有一个 subview Education,它包含下一个信息:机构名称、学位、学习年限等。但一个用户可以拥有多个教育。所以这个 View 的大小可以是动态的。但我不能简单地使用 view.frame = CGRectMake 更改 View 大小因为在它下面我有一个 View 工作经验等等。或者例如专业技能 View :它可以是一项技能,也可以是一个用户的一百个技能 - 所以我需要更改这个 View 的大小,但在它下面我有另一个 View ,所以我需要移动它等等。那么问题是处理这种情况的正确方法是什么?我知道我不能只用 view.frame= CGRectMake() 更改 View 框架- 因为工作量太大而且我认为这是一种愚蠢的方法。我知道必须有一些更直接的方法来解决这个非常常见的问题,可能是 autolayout或者是其他东西?无论如何,我希望对如何使用动态内容制作 View 提供一些帮助和建议。

最佳答案

我真的不知道您为什么说“我不能只更改 View 框架”。当然可以!

对于这种情况( View 的高度是可变的),我总是采用的方法是声明 yOffset属性,基于此,我将我的内容放在右侧 y位置。

@property (nonatomic, assign) int yOffset;

然后在 init里面方法我将此属性初始化为 0 或某个预定义的初始边距。
_yOffset = TOP_MARGIN;

然后考虑以下场景:具有 n 的用户配置文件技能数量。这就是您将如何使用 yOffset属性(property)。
for (int i=0; i<n; ++i) 
{
// place the skillView at the right 'y' position
SkillView *skillView = [[SkillView alloc] initWithFrame:CGRectMake(0,self.yOffset,300,50)];
// configure the skillView here
[self.view addSubview:skillView];

// Don't forget it has to be "+=" because you have to keep track of the height!!!
self.yOffset += skillView.frame.size.height + MARGIN_BETWEEN_SKILLS;
}

然后想象用户配置文件有 c教育条目的数量;一样:
for (int i=0; i<c; ++i) 
{
// place the educationView at the right 'y' position
EducationView *educationView = [[EducationView alloc] initWithFrame:CGRectMake(0,self.yOffset,300,50)];
// configure the educationView here
[self.view educationView];

// Don't forget it has to be "+=" because you have to keep track of the height!!!
self.yOffset += educationView.frame.size.height + MARGIN_BETWEEN_EDUCATIONS;
}

最后,当所有 subview 都添加完毕后,您必须更改包含 View 的框架。 (因为当你创建它时,你无法预先知道它会有多高)
CGRect viewFrame = self.view.frame;
viewFrame.size.height = self.yOffset + BOTTOM_MARGIN;
self.view.frame = viewFrame;

就是这样。

希望这可以帮助!

关于ios - 如何在 iOS 中创建具有动态内容的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595590/

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