The app I'm currently working on, requires a textfield with shadow and rounded corners. That doesn't work on a UITextField; you'll have to make it transparent, then add it to a plain UIView and style that.
I got curious and tried to add shadows and rounded corners to a number of elements in UIKit. This is the code:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var contentView: UIView! @IBOutlet weak var button: UIButton! @IBOutlet weak var textfield: UITextField! @IBOutlet weak var textView: UITextView! @IBOutlet weak var datePicker: UIDatePicker! @IBOutlet weak var toolbar: UIToolbar! @IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() { super.viewDidLoad()
self.addShadowAndCornerRadius(self.contentView) self.addShadowAndCornerRadius(self.textfield) self.addShadowAndCornerRadius(self.button) self.addShadowAndCornerRadius(self.textView) self.addShadowAndCornerRadius(self.datePicker) self.addShadowAndCornerRadius(self.toolbar) self.addShadowAndCornerRadius(self.imageView) } func addShadowAndCornerRadius(view: UIView) { let radius:CGFloat = 20.0 view.layer.cornerRadius = radius view.layer.shadowColor = UIColor.darkGrayColor().CGColor view.layer.shadowPath = UIBezierPath(roundedRect: view.bounds, cornerRadius: radius).CGPath view.layer.shadowOffset = CGSize(width: 0, height: 0) view.layer.shadowOpacity = 1.0 view.layer.masksToBounds = true view.clipsToBounds = false }
}
Below is the result in the simulator. Note that the light-blue empty element is a plain UIView.
As you can see, adding shadow and rounded corners doesn't work on UIImageView, UITextField and UIToolbar. It does work on a plain UIView, UIButton, UITextView and UIDatePicker.