Increasing the radius of the corners of a UITextField removes the shadow

I have a UITextField with custom code to control the corner radius and placeholder color and other various properties. In addition, I have a protocol with an extension to cast a shadow from any user interface element.

The problem is that whenever I increase the angular radius of the text box, I lose the shadow. As long as the corner radius is 0, I still have a shadow.

And this shows in the debugger when I increase the angle of the Radius and lose the shadow:

setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key height

Here is my protocol that I implemented to hide the shadow:

import UIKit

protocol DropShadow {}

extension DropShadow where Self: UIView {

    func addDropShadow() {
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOpacity = 0.7
        layer.shadowOffset = CGSize(width: 0, height: 4)
        layer.shadowRadius = 3
    }
}

And here is my custom class for UITextField:

import UIKit

@IBDesignable
class FancyTextField: UITextField, DropShadow {

    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }

    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var borderColor: UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }

    @IBInspectable var bgColor: UIColor? {
        didSet {
            backgroundColor = bgColor
        }
    }

    @IBInspectable var placeHolderColor: UIColor? {
        didSet {
            let rawString = attributedPlaceholder?.string != nil ? attributedPlaceholder!.string : ""
            let str = NSAttributedString(string: rawString, attributes: [NSForegroundColorAttributeName: placeHolderColor!])
            attributedPlaceholder = str
        }
    }

}
+4
source share
1 answer

UIView, clipsToBounds masksToBounds true. , .

superView UIView superView (, )

+2

Source: https://habr.com/ru/post/1661215/


All Articles