gpt4 book ai didi

ios - 如何在 Xcode Storyboard中显示具有灵活内容的界面

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:11 26 4
gpt4 key购买 nike

我需要在 View Controller 中显示咖啡馆的详细信息。咖啡厅数据来自API调用,每个咖啡厅可能有不同的数据集。

一般 View 会按顺​​序显示以下内容:

  • 咖啡馆名称
  • 地址
    • 最少 2 行,最多 4 行。
  • 联系电话
    • 可以为空,最多2组联系方式
  • 电子邮件
    • 可能是空的
  • 描述(HTML)
  • 链接到社交媒体或网站
    • 可以为空,最多 4 组 URL
  • map

我需要什么:

  • 如果不为空则在 View 中显示数据
  • 能够设置上一个元素之前的间距

我正在使用 xcode Storyboard, View Controller 嵌入在导航 Controller 和标签栏 Controller 中。

处理灵活/动态界面的推荐方法是什么,有没有我可以遵循的指南或教程?到目前为止,我能找到的所有帮助都是简单地将元素放置在固定坐标中。就我而言,某些元素大小可能会根据 API 调用返回的数据而改变。

最佳答案

有几种方法可以做到这一点..

有了那么多数据,我会制作一个表格 View 并将每一行数据(或相关数据)放在它们自己的行中,它会给你一个自由 ScrollView ,你肯定需要动态内容。

至于确定单元格的高度,您可以计算文本将占据的“边界框”的高度,以便显示适当的高度。这是一个例子....

+ (CGFloat)heightForText:(NSString *)text {

CGFloat topMargin = 10.0; // add a bit of padding to top
CGFloat bottomMargin = 10.0; // add a bit of padding to bottom
CGFloat minHeight = 44.0;

NSAttributedString *string = [NSAttributedString attributedStringWithText:text lineHeight:23 font:[UIFont systemFontWithSize:15] color:[UIColor blackColor] alignment:NSTextAlignmentLeft];

CGRect screenSize = [[UIScreen mainScreen] bounds];
CGRect size = [string boundingRectWithSize:CGSizeMake(screenSize.size.width - 70, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil];
return MAX(minHeight, size.size.height + topMargin + bottomMargin);
}

如果您想要更清楚的信息,请告诉我。

您还可以使用 Storyboard约束,如果操作得当,它会为您漂亮地计算出所有内容,但您需要考虑到用户可能需要滚动内容这一事实,即您需要一个 ScrollView 。

关于ios - 如何在 Xcode Storyboard中显示具有灵活内容的界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707936/

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