代码之家  ›  专栏  ›  技术社区  ›  jamone

我的视图显示的是y=-20,将其帧设置为y=0。旋转后,它将捕捉回y=0

  •  2
  • jamone  · 技术社区  · 16 年前

    我开始创建一个通用的基于窗口的应用程序。从iPhone版本开始,我创建了UIViewController和相关的nib。

    rootViewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
    [window makeKeyAndVisible];
    [window addSubview:rootViewController.view];
    return YES;
    

    - (void)viewDidLoad {
    [super viewDidLoad];
    adBannerView = [[ADBannerView alloc] initWithFrame:CGRectZero()];
    [self.view addSubview:adBannerView];
    

    }

    我尝试了实例化按钮,而不是广告横幅,我得到了相同的结果。

    我的主窗口也是iPhone.xib。

    是什么原因造成的?

    更改应用程序的方向后,adBannerView(或按钮…)将在y=0时捕捉到正确的位置。我尝试将adBannerView的y位置设置为20,以补偿状态栏,并使所有内容都正确显示,直到我更改方向为止。然后所有内容向下移动20像素,并在adBannerView和状态栏之间留下20像素的空间。

    3 回复  |  直到 16 年前
        1
  •  6
  •   Michael Kessler    16 年前

    试着把下一行添加到 viewDidLoad (紧接着 [super viewDidLoad];

    self.view.frame = [[UIScreen mainScreen] applicationFrame];
    
        2
  •  0
  •   Evadne Wu    16 年前

    CGRectZero 实际上是一个零矩形(0,0,0,0),所以 ADBannerView 如果它的宽度和高度都是0,就不应该出现。你可能想试试 initWithFrame:self.view.frame 差不多吧

        3
  •  0
  •   mohsenr    16 年前

    在添加视图之前,应设置大小标识符:

    - (void)viewDidLoad {
    [super viewDidLoad];
    adBannerView = [[ADBannerView alloc] initWithFrame:CGRectZero()];
    
    if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
        adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
    else
        adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier480x32;
    
    
    [self.view addSubview:adBannerView];
    
    // now you can treat it like any other subview
    // For example, if you want to move it to the bottom of the view, do this:
    
    CGRect frame = adBannerView.frame;
    frame.origin.y = self.view.frame.size.height - frame.size.height;
    [adBannerView setFrame:frame];
    
    }
    

    每当界面旋转时,应该通知横幅更改其大小。

    假设您可以访问WWDC视频(免费提供),请检查视频会话305。它演示如何添加横幅。