【发布时间】:2012-10-20 15:26:37
【问题描述】:
以下设置:
我有一个 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;
}
任何想法为什么这有效?我认为这里不适合设置此属性。
【问题讨论】:
-
你试过了吗:1)设置self.layer.masksToBounds = YES 2)在viewDidLoad中设置cornerRadius,而不是initWithFrame?
-
如您所见,
self.layer.masksToBounds = YES已设置,我尝试在其视图控制器的viewDidLoad方法中设置它,而不是它自己的initWithFrame:没有任何变化。 -
您找到解决方案了吗?我有同样的问题
标签: iphone objective-c ios uiview cornerradius