0

我想在地图上显示一些注释信息,在地图下方我想显示一个非常简单的自定义日期选择器。

我在 nib 中创建了一个自定义视图,并将其与 UIView 的实例相关联。

这个相同的类包含这个从 nib 加载视图实例的函数。

+(id)loadCustomDatePicker
{
    CustomDatePicker *customDatePicker = [[[NSBundle mainBundle] loadNibNamed:@"CustomDatePicker" owner:nil options:nil] lastObject];

    if ([customDatePicker isKindOfClass:[CustomDatePicker class]])
        return customDatePicker;
    else
        return nil;
}

这是我的界面生成器截图。

在此处输入图像描述

在我的视图控制器的viewDidAppear方法中,我正在使用此代码来加载自定义视图

CustomDatePicker *customDatePicker = [CustomDatePicker loadCustomDatePicker];

[self.view addSubview:customDatePicker];
[self.view bringSubviewToFront:customDatePicker];

customDatePicker.frame = CGRectMake(0, 375, 320, 40);

下面是模拟截图:

在此处输入图像描述

nib 文件中自定义视图的尺寸已设置为 320 x 40。背景是透明的。

这是问题:

由于场景的高度是 504,我的代码应该是

 customDatePicker.frame = CGRectMake(0, 464, 320, 40);

但是当我实现这个时,我只能看到地图。甚至 (0,400), (0,420) 也不起作用。我使用了反复试验并使用了(0,375)。

从视觉上看,我的目标似乎是完整的。但我不知道为什么 (0,375) 在不应该工作的时候工作。

4

1 回答 1

1

这取决于“self.view”是哪个视图。看起来该视图只是地图(不包括搜索栏)。为什么不设置

customDatePicker.frame = CGRectMake(0, self.view.size.height - 40, 320, 40)

那么您不依赖于视图的实际大小(无论如何这在 iPhone 4 和 5 之间会有所不同)。

顺便说一句,viewDidAppear添加栏是一种奇怪的方法,viewDidLoad就是为此而设计的。将其添加到 中viewDidLoad,然后将其框架设置为viewViewAppear

于 2013-07-29T12:31:59.053 回答