Как сделать 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 ответов


попробуйте что-то вроде этого

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

Если вам нужно создать круг просмотра, вы должны установить masksToBounds в true, не устанавливайте clipsToBounds

надеюсь, это поможет вам.


Swift 4

вы можете применить следующую функцию к любому виду, включая кнопки.

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

большой.

это не сработало для меня сначала, когда я применил его в viewDidLoad. В этот момент ограничения все еще играют с размером ваших кнопок и радиус угла применяется к кнопке, которая, по его мнению, в два раза больше, в результате чего у вас есть нечетные формы. Применять правильные значения справа измерения, поместите код в override func viewDidLayoutSubviews().

Я знаю, что это может быть более конкретный случай в моем личном процессе, но я уверен, что это поможет кому-то.


есть рабочий код.Я проверяю. Надеюсь, это поможет. Я не уверен, почему, но я проверяю это, изменяя высота и ширина рамки здесь " 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

надеюсь, что это помогает.