我想在地图上显示一些注释的信息,在地图下方我想显示一个非常简单的自定义日期选择器。
我在笔尖中创建了一个自定义视图,并将其与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)工作时它不起作用。
答案 0 :(得分:1)
这取决于'self.view'是哪个视图。看起来该视图仅是地图(不包括搜索栏)。你为什么不设置
customDatePicker.frame = CGRectMake(0, self.view.size.height - 40, 320, 40)
那么你不依赖于视图的实际大小(无论如何,它将在iPhone 4和5之间有所不同)。
顺便说一句,viewDidAppear
是一种添加条形的奇怪方法,viewDidLoad
就是为了这个。在viewDidLoad
中添加,然后在viewViewAppear
中设置其框架。