[英]How to display interface with flexible content in Xcode storyboard
我需要在视图控制器中显示咖啡馆的详细信息。 咖啡馆数据来自API调用,每个咖啡馆可能有不同的数据集。
通常,视图将按顺序显示以下内容:
我需要的:
我正在使用xcode storyboard,视图控制器嵌入在导航控制器和Tab栏控制器中。
处理灵活/动态界面的推荐方法是什么,我可以遵循任何指南或教程吗? 到目前为止,我能找到的所有帮助都是将元素简单地放置在固定坐标中。 对于我的情况,某些元素大小可能会根据API调用返回的数据而改变。
有几种方法可以做到这一点..
有了这么多的数据,我将创建一个表格视图,并将每行数据(或相关数据段)放在自己的行中,这将为您提供一个自由滚动视图,您最需要动态内容的滚动视图。
至于确定单元格的高度,您可以计算文本将占据以显示适当高度的“边界框”的高度。 这是一个例子....
+ (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);
}
如果您想要更清晰,请告诉我。
您还可以使用故事板约束,如果正确完成将为您精美地计算所有内容,但您需要考虑用户可能需要滚动内容的事实,即您需要滚动视图。
您所描述的内容非常类似于电话(或联系人)应用中的联系人屏幕。 只需使用相同的解决方案:表视图。 咖啡馆名称一行。 地址的一行(包含文本视图)。 每个联系号码一行。 每个电子邮件地址一行。 一行带有用于描述的嵌入式Web视图(如果可以使用RTF代替HTML,则为文本视图)。 每个社交媒体链接一行。 一行带有嵌入式地图视图。
您可以使用故事板执行此操作,同时添加一个新的视图控制器,并使其尺寸灵活。
看到这个屏幕截图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.