我有一个UIButton,我想访问其背景图像的UIImageView,以便我可以使图像循环。我知道我可以影响图像本身,但我更愿意更优雅地做到这一点。我也知道我可以使用button.currentBackgroundImage
属性在后台获取UIImage,但我想要视图本身。一旦我有了视图,我打算使用这段代码:
buttonImageView.layer.cornerRadius = buttonImageView.frame.size.width / 2;
buttonImageView.clipsToBounds = YES;
如何访问buttonImageView?
编辑: 由于@ vhristoskov的建议,我尝试使用以下代码裁剪按钮:
self.button.layer.cornerRadius = self.button.frame.size.width/2;
self.button.clipsToBounds = YES;
它形成了这个形状:
调试后我发现frame.size.width是46,应该是100.所以我尝试了这个代码:
self.button.layer.cornerRadius = self.button.currentBackgroundImage.size.width/2;
self.button.clipsToBounds = YES;
这产生了这种形状:
而这一次,cornerRadius
被设置为65.所以看起来我的问题实际上是我现在没有正确的宽度。我应该访问哪个属性才能获得正确的数字?
答案 0 :(得分:0)
假设您调用了类似的内容:
[self.myButton setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
在viewDidLoad或更早版本中,您可以在viewDidAppear中调用以下内容:
if (self.myButton.subviews.count > 0 && [self.myButton.subviews[0] isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = self.myButton.subviews[0];
imageView.layer.cornerRadius = imageView.frame.size.width / 2;
imageView.clipsToBounds = YES;
}
但它不是更优雅,因为子视图排序是UIButton的实现细节,并且可能随时更改。
答案 1 :(得分:0)