如何让UIButton成为一个圆圈?

时间:2016-06-12 03:27:24

标签: ios swift uiimageview uibutton

我一直试图让细胞中的UIButton成为一个完美的圆圈。不幸的是,圆形是基于背景图像而不是UIButton框架形成的。

我创建圆圈的代码:

cell.StoryViewButton.setImage(image, forState: .Normal)
cell.StoryViewButton.frame = CGRectMake(50, 8, 100, 100)
cell.StoryViewButton.layer.masksToBounds = false
cell.StoryViewButton.layer.cornerRadius = cell.StoryViewButton.frame.width/2
cell.StoryViewButton.clipsToBounds = true

输出如下所示:Output Images for each cell

如何获得我想要的完美圆形按钮框架?

3 个答案:

答案 0 :(得分:13)

尝试这样的事情

 cell.StoryViewButton.layer.masksToBounds = true
 cell.StoryViewButton.layer.cornerRadius = cell.StoryViewButton.frame.width/2

如果您需要创建一个视图圆,则必须将masksToBounds设置为true,不要设置clipsToBounds

希望这会对你有所帮助。

答案 1 :(得分:3)

Swift 4

您可以将以下功能应用于任何视图,包括按钮。

func makeViewCircular(view: UIView) {
    view.layer.cornerRadius = view.bounds.size.width / 2.0
    view.clipsToBounds = true
}

大。

但是,当我在viewDidLoad中应用它时,这对我来说并不起作用。此时,约束仍在使用按钮的大小,并且角半径应用于它认为是尺寸的两倍的按钮,从而产生您具有的奇怪形状。要将正确的值应用于正确的度量值,请将代码放在override func viewDidLayoutSubviews()

我知道这可能是我个人过程中更具体的情况,但我确信它会帮助某人。

答案 2 :(得分:0)

有工作代码。我测试它。希望能帮助到你。 我不知道为什么,但我通过改变框架的高度和宽度来检查这里“CGRectMake(50,8,120,120)”框架的高度和宽度以及按钮的高度和宽度应该同样可以获得完美的圆圈。

 cell.StoryViewButton.setImage(image, forState: .Normal)
 cell.StoryViewButton.frame = CGRectMake(50, 8, 120, 120)
 cell.StoryViewButton.layer.cornerRadius = self.btn.frame.width/2;
 cell.StoryViewButton.layer.masksToBounds = true

希望它有所帮助。