如何改变UIView在代码中的位置?

时间:2014-07-28 03:28:23

标签: ios uiview xamarin

我创建了一个附加了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不是。

1 个答案:

答案 0 :(得分:0)

您可以尝试一些事情。

首先尝试调用

label_period.SetNeedsLayout();

或可能(但不太可能)

label_period.SetNeedsDisplay();

如果这些都不起作用,我会检查你的.xib中没有声明任何不必要的布局约束。

虽然这只是您问题的直接部分,但我建议您不要使用RetrieveViewByID(...)而只是通过名称引用视图。 (如果你在.xib中声明了UIViewController,你应该可以使用this.label_period访问UIViewController中的视图。

最后,虽然我不知道你的情况的具体情况,但我建议你切换到故事板,你会遇到这些问题。