Iphone 如果用自定义子类替换默认视图,则cornerRadius不起作用
以下设置: 我有一个popupViewController,它有一个自定义UIView子类作为它的视图,在Iphone 如果用自定义子类替换默认视图,则cornerRadius不起作用,iphone,objective-c,ios,uiview,cornerradius,Iphone,Objective C,Ios,Uiview,Cornerradius,以下设置: 我有一个popupViewController,它有一个自定义UIView子类作为它的视图,在loadView - (void)loadView { CGRect startingPopupSize = CGRectMake(0.0f, 0.0f, 300.0f, 160.0f); _popupView = [[MoviePopupView alloc] initWithFrame:startingPopupSize]; self.view = _popupV
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可以正常工作(我想替换它有几个原因)
你知道为什么这不起作用吗
编辑: 如果我只是将layers
masksToBounds=YES
属性从initWithFrame
方法移动到drawRect
方法,它就会起作用。将其移动到其viewcontrollersviewDidLoad
不会
- (void)drawRect:(CGRect)rect
{
// Drawing code
self.layer.masksToBounds = YES;
}
你知道为什么会这样吗?我认为在这里设置此属性不合适。您应该创建两个视图:
- 背景视图
- 文本视图
对于文本视图,将背景色设置为透明色。这不会改变任何内容。导航栏和其他子视图仍然显示在边上。如您所尝试的:1)设置self.layer.masksToBounds=YES 2)设置viewDidLoad中的拐角半径,而不是initWithFrame?如您所见,
self.layer.masksToBounds=YES
已设置,我尝试在其viewcontroller的viewDidLoad
方法中设置它,而不是在其自己的initWithFrame
中设置:没有任何更改。您找到解决方案了吗?我也有同样的问题