在另一个视图上显示UIViewController / UIView

时间:2009-05-03 10:24:51

标签: iphone uiview uiviewcontroller

我正在尝试使用位于其上方的“完成”按钮创建一个选择器控制器,以显示在另一个视图中的表单。

我创建了一个UIViewController的子类并使用IB我添加了一个工具栏和一个选择器视图。这看起来很好,通过复制UICatalog中的示例,我可以让它显示所需的值,我可以听取选择等。

alt text http://web.me.com/gareth.davis/so/settlement_picker_ui.png

在上面我已经将视图的背景颜色设置为alpha 0.0。我也尝试将自己的视图的alpha设置为0.0,这只是显示一个完全透明的视图。

alt text http://web.me.com/gareth.davis/so/picker_running_in_app.png

以上是使用以下方式显示在表单顶部的视图控制器:

    [self presentModalViewController:settlementPickerViewController                         
                        animated:YES];

除了尝试设置我的视图的各种alpha属性之外,我还尝试按顺序更改视图的高度,这样就不需要透明的部分,麻烦的是视图然后定位在中间的一半屏幕。

2 个答案:

答案 0 :(得分:3)

解决方案似乎不是使用UIViewController而是简单的自定义UIView很好地完成了这项工作。

我在awakeFromNib方法中使用了Haentz的颜色设置:

- (void)awakeFromNib {
    picker.delegate = self;
    self.backgroundColor = [UIColor clearColor];    
}

请注意,您必须实现此操作,而不是使用x-code模板为您提供的initWithFrame方法,因为nib控制的视图不使用initWithFrame(来自Apple文档)。

答案 1 :(得分:2)

可能我只是不明白,但我并不完全明白这里的问题是什么。在底部的屏幕截图中,UI元素应该是透明的,上面没有白色区域吗? 您需要在UIViewController中正确设置UIView的框架,我猜您可能需要将背景颜色设置为透明:

self.view.backgroundColor = [UIColor clearColor];

我不确定,因为我从不使用IB,但可以将基本视图的背景颜色的Alpha值设置为0.不是视图本身的alpha值,而是背景颜色的alpha值