Ios 在自定义UIView类Iphone上应用自动布局约束。

Ios 在自定义UIView类Iphone上应用自动布局约束。,ios,uiview,constraints,autolayout,Ios,Uiview,Constraints,Autolayout,我正在开发一个简单的iPhone应用程序,其中我使用自定义UIView类。 因此,当我在故事板中将该类应用于我的视图时,它将停止接受我的自动布局约束。我尝试在故事板中应用约束。所以我的自定义UIView类看起来像 @implementation RoundedView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } r

我正在开发一个简单的iPhone应用程序,其中我使用自定义UIView类。 因此,当我在故事板中将该类应用于我的视图时,它将停止接受我的自动布局约束。我尝试在故事板中应用约束。所以我的自定义UIView类看起来像

 @implementation RoundedView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Initialization code
}
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
UIRectCorner corners;
 … some code ...
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                               byRoundingCorners:corners
                                                     cornerRadii:CGSizeMake(self.radious, self.radious)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame         = self.bounds;
maskLayer.path          = maskPath.CGPath;
self.layer.mask         = maskLayer;

}

我正在将这个类应用于我在故事板中的观点,它工作得很好,但它没有听我的限制。因此,如何在这种情况下应用约束。有人知道这个吗?我需要一些帮助。多谢各位

您需要更改层的帧以匹配其superview

- (void)layoutSubviews{
    [super layoutSubviews];
    [maskLayer setFrame:self.bounds];
}

你是说它在没有awakeFromNib代码的情况下工作吗?你是否尝试将maskLayer's needs displaynboundschange设置为YES?你首先也需要设置maskLayer的帧。我相信图层不受自动布局的影响。@cekisakurek你能帮我吗?@cekisakurek我试过maskLayer.needsDisplaynboundschange=是;但这对我来说仍然不起作用。如何做到这一点?在这篇文章中添加更多的细节来解释它的作用可能会对OP有所帮助。@cekisakurek谢谢你的重播。我试过你的解决办法。但这对我不起作用。