0

在我的故事板用户界面中,我添加了一些UIImageViewsUIScrollViews. 我在 ViewdidLoad 中设置了这些的大小和位置,这样:

- (void)viewDidLoad
{
    [facebookSharing setFrame:CGRectMake(400, facebookSharing.frame.origin.y, facebookSharing.frame.size.width, facebookSharing.frame.size.height)];
    [bumpImage setFrame:CGRectMake(500, bumpImage.frame.origin.y, bumpImage.frame.size.width, bumpImage.frame.size.height)];
}

问题是没有应用此代码。我有一个代码完全相同的按钮,当我按下它时,它确实可以正常工作。那么,有没有可能代码没有在ViewDidLoad. (即使NSLog()证明ViewDidLoad确实在运行)?

此外,我在ViewDidLoad特定UIViewController于 iPad 的代码中有此代码,并且代码在那里工作。它适用于任何控制器中的 iPad,但不适用于 iPhone。为什么是这样?谢谢你。

4

3 回答 3

0

在调用 viewDidAppear 之前,不会设置框架和边界。尝试将此代码移动到viewDidAppear.

于 2013-02-18T11:55:08.263 回答
0

正如其他答案中已经说明的那样,viewDidLoad对于这种任务来说,调用得太早了。 viewDidAppear但是,一般来说布局更改可能为时已晚,因为最终动画不再考虑这些更改。

我喜欢在其中做布局viewDidLayoutSubviews(如果视图本身还没有通过 autoSize/autoLayout/layoutSubviews/.. 处理子视图布局)

这可能会有所帮助:http: //developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/AdoptingaFull-ScreenLayout/AdoptingaFull-ScreenLayout.html#//apple_ref/doc/uid/TP40007457-CH13-SW2

于 2013-02-18T13:10:50.307 回答
-1

提供后IBOutlets必须进行属性合成。所以我们需要使用

 - (void)viewDidLoad
   {
     [self.facebookSharing setFrame:CGRectMake(400, facebookSharing.frame.origin.y, facebookSharing.frame.size.width, facebookSharing.frame.size.height)];
     [self.bumpImage setFrame:CGRectMake(500, bumpImage.frame.origin.y, bumpImage.frame.size.width, bumpImage.frame.size.height)];
   }
于 2013-02-18T12:04:13.250 回答