iphone UIView子类未按要求初始化

时间:2010-06-27 07:51:30

标签: iphone objective-c ipad

我是Objective-c和iPhone开发的新手,但到目前为止,一切都很顺利,直到我试图深入挖掘(不太深)。我的问题是我无法初始化具有不同方向的特定坐标的特定UIView子类。

轮换效果很好,但问题是应用初始化时。我正在考虑为不同的方向提供不同的布局。

我的应用程序实际上是一个带有主要UIViewController和三个子视图(UIView s)的iPad应用程序。我们可以调用view1,view2和view3。

在项目的笔尖上创建三个视图,并为它们编码和连接插座。

问题似乎是从viewDidLoad方法生成的...它目前看起来像这样:

-(void)viewDidLoad{

    [super viewDidLoad];
    [view1 removeFromSuperview];
    [view2 removeFromSuperview];
    [view3 removeFromSuperview];

    UIInterfaceOrientation curOrientation = self.Orientation;

    if(curOrientation == UIInterfaceOrientationPortrait)
    {
       view1 = [[XView alloc] initWithFrame:CGRectMake(20,492,728,492)];
       view2 = [[YView alloc] initWithFrame:CGRectMake(384,20,364,472)];
       view3 = [[ZView alloc] initWithFrame:CGRectMake(20,20,364,472)];

       [self.view addSubview:view1];
       [self.view addSubview:view2];
       [self.view addSubview:view3];
    }
    else if(curOrientation == UIInterfaceOrientationLandscapeRight)
    {
      //Different coordinates
    }
    else if(curOrientation == UIInterfaceOrientationLandscapeLeft)
    {
     //Different Coodinates
    }

    }

我的问题是视图没有得到与viewDidLoad方法中给出的坐标相同的坐标,它们似乎在x = 0,y = 0时初始化。然而,当我旋转设备时,一切都像魅力一样,每个UIView都设置在每个方向的正确位置。基本上我只是为每个UIView调用setFrame方法。

我不确定这里有什么问题......我需要帮助...

此致

1 个答案:

答案 0 :(得分:0)

您的视图是否是应用中加载的第一个视图?我发现在某些情况下,方向可以在首次加载时标记为UIDeviceOrientationUnknown。

无论如何,看到你班上的其他人都会很有用。你的viewWillAppear会改变框架吗?有自我。查看正确的维度?