【问题标题】:iOS rounded UITextField with shadow带有阴影的 iOS 圆形 UITextField
【发布时间】:2016-02-11 07:37:05
【问题描述】:

我想为我的 UITextField 添加阴影效果,目前我正在实现的是:
如您所见,阴影的角落没有变圆。我的代码:

        mNickname.layer.borderWidth = 1
        mNickname.layer.borderColor = UIColor.whiteColor().CGColor
        mNickname.layer.cornerRadius = 3

        mNickname.layer.masksToBounds = false
        mNickname.layer.shadowRadius = 3.0
        mNickname.layer.shadowColor = UIColor.blackColor().CGColor
        mNickname.layer.shadowOffset = CGSizeMake(1.0, 1.0)
        mNickname.layer.shadowOpacity = 1.0

【问题讨论】:

  • 移除borderColor和borderWidth
  • 当我删除它们时,textField 不再是四舍五入的。
  • 您是否也删除了cornerRadius?
  • 不,因为我希望我的 textField 是四舍五入的。

标签: ios swift


【解决方案1】:

好的,我发现了问题。 原来我正在使用 矩形边框:

正确的应该是:

代码是:

mNickname.layer.masksToBounds = false
mNickname.layer.shadowRadius = 3.0
mNickname.layer.shadowColor = UIColor.blackColor().CGColor
mNickname.layer.shadowOffset = CGSizeMake(1.0, 1.0)
mNickname.layer.shadowOpacity = 1.0

结果:

【讨论】:

    【解决方案2】:

    试试这个,代码在目标 C 中,但在 swift 中也一样

    self.textField.layer.shadowColor = [[UIColor blackColor] CGColor];
        self.textField.layer.shadowOffset = CGSizeMake(0.0, 1.0);
        self.textField.layer.shadowOpacity = 1;
        self.textField.layer.shadowRadius = 0.0;
    

    【讨论】:

      【解决方案3】:
      extension UITextField {
      
          func addShadowToTextField(color: UIColor = UIColor.gray, cornerRadius: CGFloat) {
      
          self.backgroundColor = UIColor.white
          self.layer.masksToBounds = false
          self.layer.shadowColor = color.cgColor
          self.layer.shadowOffset = CGSize(width: 0, height: 0)
          self.layer.shadowOpacity = 1.0
          self.backgroundColor = .white
          self.layer.cornerRadius = cornerRadius
         }
      }
      

      添加扩展和用法:

          dateTxtFld.addShadowToTextField(cornerRadius: 3)
          dateTxtFld.addShadowToTextField(color: UIColor.blackColor, cornerRadius: 3)
      

      【讨论】:

      • 背景颜色是关键
      • 是的,textfield的backgroundColor是关键,有人知道为什么吗?
      【解决方案4】:

      尝试将 shadowOpacity 更改为 0.5 另外,您能否发送此文本字段的完整自定义?

      【讨论】:

        【解决方案5】:

        你可以使用这个扩展

        extension ViewController {
            func setShadow(_ view: UIView) {
                view.layer.masksToBounds = false;
                view.layer.shadowRadius  = 3.0;
                view.layer.shadowColor   = UIColor.black.cgColor;
                view.layer.shadowOffset  = CGSize(width: 2.0, height: 4.0);
                view.layer.shadowOpacity = 1.0;
            }
        }
        

        【讨论】:

          【解决方案6】:

          你试过这个吗 mNickname.layer.masksToBounds = true;

          【讨论】:

          • 当我将它设置为true时,阴影不再可见。
          猜你喜欢
          • 2018-05-27
          • 2010-11-16
          • 1970-01-01
          • 1970-01-01
          • 2014-05-09
          • 1970-01-01
          • 2013-12-03
          • 2020-12-29
          • 1970-01-01
          相关资源
          最近更新 更多