4

以下设置:

我有一个 popupViewController,它有一个自定义 UIView 子类作为它的视图,在loadView

- (void)loadView
{
    CGRect startingPopupSize = CGRectMake(0.0f, 0.0f, 300.0f, 160.0f);
    _popupView = [[MoviePopupView alloc] initWithFrame:startingPopupSize];
    self.view = _popupView;
}

在这个 UIView 子类中,我在它的 init 方法中有以下代码

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        // Initialization code
        self.layer.masksToBounds = YES;
        self.layer.opaque = NO;
        self.clipsToBounds = YES;
        self.backgroundColor = [UIColor whiteColor];
        self.layer.borderWidth = 1.0f;
        self.layer.cornerRadius = 10.0f;
    }
    return self;
}

问题是,这cornerRadius不适用于此视图,但会绘制边框,请参见此处:

无角半径

如果我不使用 uiviewcontroller 的默认 uiview 替换此视图,而是将其添加为子视图,cornerRadius 工作得很好(我想替换它有几个原因)。

任何想法为什么这不起作用?


编辑:

如果我只是将图层masksToBounds = YES属性从initWithFrame方法移动到drawRect它工作的方法。将其移至其视图控制器viewDidLoad不会。

- (void)drawRect:(CGRect)rect
{
    // Drawing code
    self.layer.masksToBounds = YES;

}

任何想法为什么这有效?我认为这里不是设置此属性的正确位置。

4

1 回答 1

1

你应该提出两个观点:

  • 背景视图
  • 文本视图

对于您想要的文本背景的背景视图设置颜色。对于文本视图,将背景颜色设置为清晰颜色。

于 2012-10-20T15:54:18.957 回答