Как сделать 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
вывод выглядит так:
что я могу сделать, чтобы получить идеальный круг кнопки кадры, которые я хочу?
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
надеюсь, что это помогает.