ios - 具有拐角半径的自动布局(带砌体)
<p><p>我想用 Masonry 布局一个圆形 UIImageView。所以我创建了这样的 UIImageView:</p>
<pre><code>[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.mas_centerX);
make.top.equalTo(self.mas_top).with.offset([ floatValue]);
make.bottom.equalTo(self.descriptionLabel.mas_top).with.offset(-[ floatValue]);
make.height.equalTo(self.descriptionLabel.mas_height).priorityHigh();
make.width.equalTo(self.imageView.mas_height);
}];
</code></pre>
<p>然后我为 ImageView 创建了约束</p>
<pre><code>[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.mas_centerX);
make.top.equalTo(self.mas_top).with.offset([ floatValue]);
make.bottom.equalTo(self.descriptionLabel.mas_top).with.offset(-[ floatValue]);
make.height.equalTo(self.descriptionLabel.mas_height).priorityHigh();
make.width.equalTo(self.imageView.mas_height);
}];
</code></pre>
<p>然后我尝试应用这些约束,然后设置角半径。</p>
<pre><code> ;
;
;
self.imageView.layer.cornerRadius = self.imageView.frame.size.width/2;
</code></pre>
<p>但 <code>self.imageView</code> 的框架仍未设置(但稍后我在模拟器上查看时它确实会布局)。布局完成后调用什么方法?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>在 View 的 <code>layoutSubviews</code> 方法中调用 <code>super...</code> 后设置圆角半径:</p>
<pre><code>-(void)layoutSubviews{
;
;
}
</code></pre>
<p>这可确保在尝试应用角半径(在我的情况下是创建圆的高度/宽度的 50%)之前已经发生布局,并且计算正确。</p></p>
<p style="font-size: 20px;">关于ios - 具有拐角半径的自动布局(带砌体),我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/28146330/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/28146330/
</a>
</p>
页:
[1]