加载视图时重置UILabels的边界会产生故障(iOS)

时间:2011-12-14 15:11:55

标签: objective-c ios cocoa-touch animation

我有一个带有.xib的UIViewController,它有2个名为“LblA”和“LblB”的UILables。让我们称之为ViewController“A”。 LblA和LblB的界限或位置分别取决于@ property的lblABounds和lblBBounds。如果未设置lblABounds和lblBounds的值,则lblA和lblB将定位到默认边界,因为它们是使用.xib中的Interface Builder放置的。从lblABounds和lblBBounds获得的lblA和lblB的新边界在ViewDidLoad()函数中设置。

还有一个加载“A”的UIViewController(让它称之为“B”)。它首先调用init的“A”来检索一个对象。然后使用该对象,它设置lblABounds和lblBBounds的值。然后通过添加它作为“B”的子视图来动画并加载ViewConroller。一切正常,除了......

故障:

B动画和翻转以显示A.但是当它翻转时,为了一瞥,lblA和lblB被定位到它们的默认位置但是一旦动画结束它们只是 poof 移动到由lblABounds和lblBounds值设置的位置。

这个小故障的可疑原因:

从lblABounds和lblBBounds的值获得的lblA和lblB的位置在ViewDidLoad中设置。因此,虽然它是动画,但实际上没有加载视图并且尚未调用ViewDidLoad,因此,为了一瞥,lblA和lblB被定位到默认位置。一旦视图完成动画并且调用了ViewDidLoad,lblA和lblB就会消失 - 从默认位置出现到由lblABounds和lblBBounds的值设置的位置。

我尝试但未能正常工作的修补程序

  • 在init()中设置lblA和lblB的新边界。没有任何事情发生:S没有任何代码被执行。

...请帮忙。我希望我解释得很好。

1 个答案:

答案 0 :(得分:3)

我希望我能正确理解你的问题。

您可能还想在将视图添加为子视图之前尝试加载视图。这将强制调用视图do load方法并在调用动画之前设置标签位置。要强制加载视图控制器以进行查看,您需要请求视图属性

viewController.view

我希望有所帮助!