【发布时间】:2015-03-04 15:14:49
【问题描述】:
我目前正在开发一个 Xamarin.Forms 项目,该项目需要一个单元格的自定义布局。
我已经编写了 WP 和 Droid 布局,但停留在 iOS 上。布局很简单:
- 两列,两行。行高度相同,第一列宽 96 像素,其余由第二列占用
- 第一列由一个数字填充,跨越两行
- 第二列的第一行由一个标题填充
- 第二列的第二行由左对齐的详细文本和右对齐的日期填充。
- 如果详细信息文本太长,则会被合并,始终显示日期
为此,我编写了一个自定义渲染器,它使用原生元素(XamForms 的 ViewCell 非常慢,比 TextCell 或 ImageCell 慢 6 倍)。但在我从未真正使用过的唯一平台 iOS 上,我遇到了问题。
我创建了一个类,继承自 UITableViewCell,并为其添加了 4 个标签:titleLabel、detailLabel、dateLabel 和 bigNumLabel(后者是第一列的内容)。
我填充了这些标签,并将它们添加到子视图中,但是当它实际将它们分配到一个区域时,我几乎被击中了。我正在使用以下代码:
public override void LayoutSubviews()
{
base.LayoutSubviews();
bigNumLabel.Frame = new CoreGraphics.CGRect(0, 0, 96, 96);
titleLabel.Frame = new CoreGraphics.CGRect(96, 12, 300, 38);
detailLabel.Frame = new CoreGraphics.CGRect(96, 62, 300, 38);
dateLabel.Frame = new CoreGraphics.CGRect(396, 62, 100, 38);
}
现在,我唯一的问题是,我已经习惯了 WP(和 XamForms)的超级简单的相对布局。在WP上,我可以制作一个网格,两列,两行,并相对对齐数据-row0 column0中的bigNumLabel,rowspan2,row0 column1中的titleLabel,左对齐,row1 column1中的detailLabel,左对齐和row1 column1中的dateLabel对齐正确。然而,在 iOS 上,我必须指定到像素级别 - 那么它比 WP 更容易吗?为什么人们更喜欢这个旧系统而不是真正灵活的布局?
但这不是我目前的问题。相反,我要问的是,如何对齐这些部分,使它们不重叠,也不固定在给定的像素上——而是作为一个流?
【问题讨论】:
标签: ios uitableview xamarin xamarin.forms