如何在iOS中创建具有动态内容的视图?

主流开发者00

我遇到问题是因为我缺乏对iOS平台的了解。

我有一个视图控制器User Profile主视图中具有下一个结构:ScrollView其包含一个子视图和该UIView具有7UIViewsUILabelsUItextViewsUIImageViews等。它们中的每显示关于用户特定信息。问题-该视图的数据是从服务器获取的,并且可能有所不同。例如,我有一个子视图“教育”,其中包含下一个信息:机构名称,学位,学习年限等。但是一个用户可以接受多次教育。因此,此视图的大小可以是动态的。但是我不能简单地用view.frame = CGRectMake 因为在该视图下,我可以查看工作经验等。例如,在专业技能视图中:一个用户可以是一项技能,也可以是一百项技能-因此,我需要更改此视图的大小,但在此之下,我可以另一个观点,所以我需要移动它,依此类推。

那么问题是解决这种情况的正确方法是什么?我了解到,我不能仅仅使用view.frame= CGRectMake()它来更改视图框架,因为它工作量太大,而且我认为这是一种愚蠢的方法。我知道对于这个非常常见的问题,必须有一些更直接的方法,可能是autolayout其他?无论如何,我希望能对如何制作动态内容的视图提供帮助和建议。

路易斯·西恩

我真的不知道你为什么说“我不能只是改变镜框”。当然可以!

在这种情况下,我始终采用的方法(视图的高度可变)是声明一个yOffset属性,并根据此属性将内容放置在正确的y位置。

@property (nonatomic, assign) int yOffset;

然后在init方法内部,将此属性初始化为0或某个预定义的初始边距。

_yOffset = TOP_MARGIN;

然后考虑以下情形:具有n许多技能的用户个人资料这就是您使用该yOffset属性的方式。

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

最后,添加完所有子视图后,您必须更改包含视图的框架。(因为创建它时,您无法预先知道它的高度)

CGRect viewFrame = self.view.frame;
viewFrame.size.height = self.yOffset + BOTTOM_MARGIN;
self.view.frame = viewFrame;

就是这样。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在iOS中将UIView添加到UIScrollView中(具有动态内容的视图)

来自分类Dev

如何在iOS中创建具有动态表格视图高度的动态表格视图单元格

来自分类Dev

如何在UITableViewCell中创建具有动态高度的视图网格

来自分类Dev

如何在php中动态创建具有计数的对象?

来自分类Dev

如何在JavaScript中的动态内容内创建动态内容

来自分类Dev

Android如何在具有imageview和text视图的圆形中创建这样的视图

来自分类Dev

如何在SwiftUI中创建具有可变数量的子视图的视图?

来自分类Dev

如何在SwiftUI中创建具有多个子视图的视图,例如VStack

来自分类Dev

如何在VBA中的excel中创建具有文件属性的动态对象列表

来自分类Dev

钛:创建具有动态高度的视图

来自分类Dev

创建具有自己内容的动态标签

来自分类Dev

如何在postgresql中创建具有可通过函数作为参数传递名称的视图?

来自分类Dev

如何在具有许多物化视图的oracle中创建程序包

来自分类Dev

如何在具有动态对齐要求的C ++中创建对象?

来自分类Dev

如何在MATLAB中基于字符串创建具有动态名称的变量?

来自分类Dev

如何在R中创建具有动态列长度的数据框

来自分类Dev

如何在嵌套的flex容器中创建具有固定宽度的水平可滚动内容?

来自分类Dev

如何在Windows中创建具有唯一内容的大文件?

来自分类Dev

如何在jQuery中动态创建混合HTML内容

来自分类Dev

如何在视图中获取具有在视图中定义的动态URL的模型

来自分类Dev

深入了解如何在iOS Swift中创建具有多个列的表

来自分类Dev

如何在iOS 7中创建具有“模糊”背景的透视按钮

来自分类Dev

如何在iOS中创建可扩展的表格视图?

来自分类Dev

如何在Xamarin iOS中创建垂直滚动视图

来自分类Dev

具有透明内容的ios 7视图与以前的视图重叠

来自分类Dev

如何在iOS中动态创建水平重复图像

来自分类Dev

具有FragmentStageAdapter动态内容的Android选项卡视图

来自分类Dev

如何在CODEIGNITER中连接具有动态长度的文本?

来自分类Dev

如何在C#中具有动态Nunit TestCaseSource?

Related 相关文章

  1. 1

    如何在iOS中将UIView添加到UIScrollView中(具有动态内容的视图)

  2. 2

    如何在iOS中创建具有动态表格视图高度的动态表格视图单元格

  3. 3

    如何在UITableViewCell中创建具有动态高度的视图网格

  4. 4

    如何在php中动态创建具有计数的对象?

  5. 5

    如何在JavaScript中的动态内容内创建动态内容

  6. 6

    Android如何在具有imageview和text视图的圆形中创建这样的视图

  7. 7

    如何在SwiftUI中创建具有可变数量的子视图的视图?

  8. 8

    如何在SwiftUI中创建具有多个子视图的视图,例如VStack

  9. 9

    如何在VBA中的excel中创建具有文件属性的动态对象列表

  10. 10

    钛:创建具有动态高度的视图

  11. 11

    创建具有自己内容的动态标签

  12. 12

    如何在postgresql中创建具有可通过函数作为参数传递名称的视图?

  13. 13

    如何在具有许多物化视图的oracle中创建程序包

  14. 14

    如何在具有动态对齐要求的C ++中创建对象?

  15. 15

    如何在MATLAB中基于字符串创建具有动态名称的变量?

  16. 16

    如何在R中创建具有动态列长度的数据框

  17. 17

    如何在嵌套的flex容器中创建具有固定宽度的水平可滚动内容?

  18. 18

    如何在Windows中创建具有唯一内容的大文件?

  19. 19

    如何在jQuery中动态创建混合HTML内容

  20. 20

    如何在视图中获取具有在视图中定义的动态URL的模型

  21. 21

    深入了解如何在iOS Swift中创建具有多个列的表

  22. 22

    如何在iOS 7中创建具有“模糊”背景的透视按钮

  23. 23

    如何在iOS中创建可扩展的表格视图?

  24. 24

    如何在Xamarin iOS中创建垂直滚动视图

  25. 25

    具有透明内容的ios 7视图与以前的视图重叠

  26. 26

    如何在iOS中动态创建水平重复图像

  27. 27

    具有FragmentStageAdapter动态内容的Android选项卡视图

  28. 28

    如何在CODEIGNITER中连接具有动态长度的文本?

  29. 29

    如何在C#中具有动态Nunit TestCaseSource?

热门标签

归档