iOS在圆视图中的位置标签

iOS在圆视图中的位置标签,ios,objective-c,storyboard,Ios,Objective C,Storyboard,我定义了一个包含UImageView和UILabel的视图。我为每个元素设置了约束 在中,我想用第一个视图做一个圆,所以我在代码中这样做了: self.mainView.layer.cornerRadius = self.mainView.frame.size.width / 2; self.mainView.clipsToBounds = YES; 所以它是有效的,我有一个圆圈,但是UImageView和UILabel似乎没有遵循故事板中设置的约束 例如,在我的UILabel

我定义了一个包含UImageView和UILabel的视图。我为每个元素设置了约束

在中,我想用第一个视图做一个圆,所以我在代码中这样做了:

    self.mainView.layer.cornerRadius = self.mainView.frame.size.width / 2;
    self.mainView.clipsToBounds = YES;
所以它是有效的,我有一个圆圈,但是UImageView和UILabel似乎没有遵循故事板中设置的约束

例如,在我的UILabel上,我在主视图上设置了一个左右5px的边距,但我可以在主视图上看到我的UILabel“out”

我试图做一个“setNeedsUpdateConstraints”,但它不是解决方案

那么,我需要做什么才能正确定位UILabel


谢谢,

我想这就是你想要的:

 self.mainView.layer.masksToBounds = YES;

您的问题是,在更改
mainView
的图层时,实际上并没有更改视图的边界。视图的边界仍以矩形方式表示。您需要做的是更改
UILable
的宽度约束

要做到这一点,只需为UILable创建一个自动布局约束(您还没有)。控件将其拖动到viewController,并使用约束中的
常量
值动态更改它


如果您不需要动态设置,只需将左右边距设置为更大的边距

您的标签是mainView子视图吗?是的,它是my UIView“mainView”的子视图。您可以发布屏幕截图吗?所有其他约束是否正常工作?您是否尝试删除设备上的应用程序?是的,它工作正常,因为如果我删除代码以生成一个圆,UILabel的位置将很好。我没有设置宽度约束,因为我只希望我的UILabel以边距left&right=>5px居中。所以我不明白在更新mainView后不可能对我的UILabel重新定位?(或者对我的mainView重新定位其子视图)问题不在于重新定位。因为自动布局工作得很好。将新值设置为cornerRadius后,视图的边框没有更改。所以事实上标签仍然居中。哦,好吧,我明白了。。但我不知道如何在圆视图上正确居中标签:/n您希望标签垂直和水平居中吗?