The following code works on an iPhone but on an iPad the circle is not evenly rounded.
How can I make the view look like a circle on both devices?
let width:CGFloat = UIScreen.main.bounds.width*0.0533
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2
Enter Swift as Language and choose Storyboard as User Interface, Choose Next. Select File -> New File -> iOS -> Cocoa Touch Class. Name the class CircleView with a subclass of UIView. This class will contain the views where the circles will be drawn.
If you want your UIView to appear as a circle there are couple of ways doing this.
If you don't know the height/width of your view in advance. You can simply override layoutSubviews()
function in it's superview class or func viewDidLayoutSubviews()
function in view controller and set the corner radius directly there.
override func layoutSubviews() {
super.layoutSubviews()
label.layer.cornerRadius = label.frame.size.width/2
}
Don't forget to set the UIView's layer's masksToBounds property to true.
Specify bezier path for the mask layer. Layer's frame must be updated every time the view changes its size.
If you're dealing with images, you can also consider rounding the image itself before displaying it in UIImageView - performance wise it could be a way faster than the previous options.
For making complete circle, you should keep height and width same for your label. Use this code.
let width:CGFloat = UIScreen.main.bounds.width*0.0533
label.frame = CGRect(0,0,width,width)
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With