ios - UITextField 阴影不会显示

标签 ios swift swift3

在我的 xib 文件中,我创建了一个通用函数,我想通过它为那些文本字段实现阴影来添加底部边框

func setupTextField(textField: UITextField) {

        textField.leftViewMode = UITextFieldViewMode.always
        let imageView = UIImageView();
        let image = UIImage(named: "calendar");
        imageView.image = image;
        imageView.frame = CGRect(x: 5, y: 8, width: 20, height: 20)
        textField.addSubview(imageView)
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 40, height: textField.frame.height))
        textField.leftView = paddingView


        textField.borderStyle = .none
        textField.layer.backgroundColor = UIColor.white.cgColor
        textField.layer.masksToBounds = false
        textField.layer.shadowColor = UIColor(hex: "#D8D8D8").cgColor
        textField.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        textField.layer.shadowOpacity = 1.0
        textField.layer.shadowRadius = 0.0


    }

我从我的 awakeFromNib() 方法中调用了这个函数,结果它在我的第二个 UITextField 上添加了阴影,但在第一个上没有。虽然从调试中我可以看到,如果没有第二个 UITextField 那么这会在我的第一个上画一个阴影。

如何克服这个问题?

最佳答案

对于swift 4, swift 4.2, swift 5 请引用下面的答案 可以为任何 UIView 子类(imageview、label、textfield、textview 等)提供阴影

extension UIView {
    /* The color of the shadow. Defaults to opaque black. Colors created
     * from patterns are currently NOT supported. Animatable. */
    @IBInspectable var shadowColor: UIColor? {
        set {
            layer.shadowColor = newValue!.cgColor
        }
        get {
            if let color = layer.shadowColor {
                return UIColor(cgColor: color)
            }
            else {
                return nil
            }
        }
    }

    /* The opacity of the shadow. Defaults to 0.4 Specifying a value outside the
     * [0,1] range will give undefined results. Animatable. */
    @IBInspectable var shadowOpacity: Float {
        set {
            layer.shadowOpacity = newValue
        }
        get {
            return layer.shadowOpacity
        }
    }

    /* The shadow offset. Defaults to (1, 2). Animatable. */
    @IBInspectable var shadowOffset: CGPoint {
        set {
            layer.shadowOffset = CGSize(width: newValue.x, height: newValue.y)
        }
        get {
            return CGPoint(x: layer.shadowOffset.width, y:layer.shadowOffset.height)
        }
    }

    /* The blur radius used to create the shadow. Defaults to 3. Animatable. */
    @IBInspectable var shadowRadius: CGFloat {
        set {
            layer.shadowRadius = newValue
        }
        get {
            return layer.shadowRadius
        }
    }
}

关于ios - UITextField 阴影不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346300/

相关文章:

ios - 从 AFNetworking 2.0 使用 JSON 加载 UITableView

ios - CLPlacemark 属性为零时的处理

swift - 在 Swift 中使用 arc4random 避免重复

ios - 在不添加联系人的情况下使用 CNContactViewController (swift)

ios - 动画 UIButton 的文本以捏合和捏开不起作用

swift - 为什么函数参数在 Swift 中是不可变的?

ios - 在类 objective-c 的另一个实例中访问数组

javascript - 在 iOS Safari 中单击会在您点击的下方的元素上触发 "hover state"

swift - 惰性初始化和 deinit

javascript - 在 Swift 中,如何调用 JSContext.callWithArguments 返回的 Jscript 对象的方法