我创建了一个附加了xib布局文件的自定义ViewCell类,并在xib中添加了一些标签。但是当我想在代码中更改标签的位置时,它不起作用,你能告诉我为什么吗? 以下是相关代码:
public override void LayoutSubviews ()
{
base.LayoutSubviews ();
var bounds = ContentView.Bounds;
UILabel label_period = RetriveViewByID ("label_period") as UILabel;
label_period.ContentMode = UIViewContentMode.Redraw;
label_period.Text = string.Format ("{0}天之旅", m_travel_data.period); \\Works
label_period.Frame = new RectangleF (20, label_period.Frame.Y, label_period.Frame.Width, label_period.Frame.Height);
}
这很奇怪,因为Text实际上已经改变了,但Frame不是。
答案 0 :(得分:0)
您可以尝试一些事情。
首先尝试调用
label_period.SetNeedsLayout();
或可能(但不太可能)
label_period.SetNeedsDisplay();
如果这些都不起作用,我会检查你的.xib中没有声明任何不必要的布局约束。
虽然这只是您问题的直接部分,但我建议您不要使用RetrieveViewByID(...)
而只是通过名称引用视图。
(如果你在.xib中声明了UIViewController,你应该可以使用this.label_period
访问UIViewController中的视图。
最后,虽然我不知道你的情况的具体情况,但我建议你切换到故事板,你会遇到这些问题。