2016-06-12 85 views
4

我一直在试图使单元格中的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

我能做些什么来获得我想要的完美的圆形按钮框架?

+0

使用Autolayout?那么设置框架不起作用。 – HDT

+0

@HDT是的,我使用Autolayout,我应该使用它吗? –

+0

这取决于你当前的实现,但你仍然可以使用Autolayout,但是,不要设置框架,而是使用约束来平均地设置视图的宽度和高度。 – HDT

回答

8

尝试是这样的

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

如果你需要创建的视图,你必须masksToBounds设置为true了一圈,没有设置clipsToBounds

希望这会帮助你。

+0

Thx it work,thx @Nirav D – AliasCocoa

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 

希望它有帮助。

1

斯威夫特4

您可以应用下面的函数任何视图,包括按钮。

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

太好了。

这对我来说并不适用,因为我在viewDidLoad中应用它。在这一点上,约束仍在玩你的按钮的大小和角落半径应用于一个按钮,它认为是两倍的大小,导致你有奇怪的形状。要将正确的值应用于正确的测量,请将代码放入override func viewDidLayoutSubviews()

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