UIView在iOS设备上不透明,但在模拟器上是透明的

时间:2012-08-09 15:13:49

标签: objective-c ios cocoa-touch uiview transparency

有一个我想透明的视图,它在模拟器上工作,但由于某种原因不在我的设备上。我不知道为什么会这样。我的代码如下所示:

- (void)viewDidLoad

    [...]
    UIView *transparentBackgroundView = [[UIView alloc] initWithFrame:self.view.frame];

    // Doesn't work on my device. 
    transparentFlipBackgroundView.backgroundColor = [UIColor clearColor];

    // I have also tried. 
    // transparentFlipBackgroundView.alpha = 0;
    // transparentFlipBackgroundView.opaque = YES
    // transparentFlipBackgroundView.layer.backgroundColor = [UIColor clearColor].CGColor;

    // I later add the view to an array...
    self.pageViews = [[NSMutableArray alloc] initWithObjects:transparentFlipBackgroundView, lastPage, nil];  
    [...]
}

为什么会发生这种情况的任何想法,以及我应该如何使UIView透明?

4 个答案:

答案 0 :(得分:2)

尝试更改

transparentFlipBackgroundView.backgroundColor = [UIColor clearColor];

transparentFlipBackgroundView.backgroundColor = 
                                      [UIColor colorWithRed:0 green:0 blue:0 alpha:0];

答案 1 :(得分:1)

你有其他设备可以尝试吗?如果它在模拟器上运行,它肯定也适用于您的设备吗?如果您愿意,我不介意尝试使用我的某个设备。

答案 2 :(得分:1)

我遇到了XCode5和iOS7 SDK的这个问题。我发现我在辅助功能设置(设置/常规/辅助功能)下打开了“增加对比度”。这导致导航栏的透明度低于此设置关闭时的透明度。

把它关掉,现在我可以看到酒吧后面有一些透明度。它仍然没有模拟器那么多,但它现在好多了。

答案 3 :(得分:0)

非常hacky解决方案,但我通过使用CGRectZero创建视图来修复它。