How do I make a UIImageView with rounded corners on a Swift iOS Playground?
Inside it needs to be filled with a color.
I was tired of writing set radius and mask to bound for each UIView. So I made the following extenstion for UIView. Should work for every UIView subclass, though I have not tested it. The extension can be narrowed down for specific Views you use of course.
extension UIView {
func setRadius(radius: CGFloat? = nil) {
self.layer.cornerRadius = radius ?? self.frame.width / 2;
self.layer.masksToBounds = true;
}
}
It will default to the view's half width if you don't pass it any specific value.
Swift 5.0:
My personal preference is to have an extra swift file for specific changes like this one. What I do is then create a class e.g. "RoundCorner" which is a subclass of the element I want to change in this case a View element. And then I am overriding the individual settings.
class RoundCorner: UIView {
override func draw(_ rect: CGRect) {
self.layer.cornerRadius = 10 // change this number to get the corners you want
self.layer.masksToBounds = true
}
}
After that, you only have to select the element you want this changes on, and set the custom class to the class we created earlier.
Look at the screenshot here
Swift 3.0, 4.0
If you want to use the storyboard. I applied this and make sure that "Clip to bounds" is enable.
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
Result:
For rounded circle image frame in swift, what it worked for me was:
self.profileImageView.image = UIImage(named:"profileUser")
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
And for adding a shadow:
self.profileImageView.layer.masksToBounds = NO;
self.profileImageView.layer.cornerRadius = 8;
self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
self.profileImageView.shadowRadius = 5;
self.profileImageView.shadowOpacity = 0.5;
Try this, it worked for me.
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true