2017-01-10 9 views
0

私は5つのtextFieldsを持っています。私は最初に0.2境界幅を設定しなければなりません。その後、編集ボタンをタップすると境界幅を0.2から0.8に変更してから、再度submitボタンをタップしなければなりません。 0.2まで減少する。CALayerの境界線の色と幅は変更されていませんか?

境界線の色と幅が変化していないことがあります。ここでは以下の私のコードは次のとおりです。ここで

class EditProductCell: UITableViewCell { 


    override func awakeFromNib() { 
    super.awakeFromNib() 

    //Create Border Line. 
    createBorderLine(0.2,UIColor.lightGray) 
    } 

//Create Border Line on Text Field 
    func createBorderLine(_ width : CGFloat, _ color : UIColor)//_ width : CGFloat, _ color : UIColor) 
{ 
    setBottomBorder(textField: InvoiceDate, width: width,color : color) 
    setBottomBorder(textField: InvoiceNumber, width: width,color : color) 
    setBottomBorder(textField: modelNumber, width: width,color : color) 
    setBottomBorder(textField: productName, width: width,color : color) 
    setBottomBorder(textField: serialNumber, width: width,color : color) 

    self.layoutSubviews() 
    } 
}  

は別のクラスには、次のとおりです。ここで

class EditProductView: BaseViewController { 

    //TableView 
    @IBOutlet var tableView: UITableView! 

    //View Did Load 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     //self.view.backgroundColor = hexStringToUIColor(hex: "#CCCCCC") 
     tableView.delegate = self 
     tableView.dataSource = self 

     //Button Submit 
     self.btnSubmit.isHidden = true 

     tableView.bounces = false 
     tableView.alwaysBounceVertical = false 
     hideKeyboardWhenTappedAround() 

    } 

    //Button Submit 
    @IBAction func btnSubmitAction(_ sender: Any) { 
     self.btnSubmit.isHidden = true 

     let index : NSIndexPath = NSIndexPath(row: 0, section: 0) 
     let tCell : EditProductCell = self.tableView.cellForRow(at: index as IndexPath) as! EditProductCell 

     //Change border line 
     tCell.createBorderLine(0.2, UIColor.lightGray) 

     tCell.btnEdit.isHidden = false 

     dismissKeyboard() 
    } 

    func btnEditAction() 
    { 
     btnSubmit.isHidden = false 
     let index : NSIndexPath = NSIndexPath(row: 0, section: 0) 
     let tCell : EditProductCell = self.tableView.cellForRow(at: index as IndexPath) as! EditProductCell 

     tCell.btnEdit.isHidden = true 

     //Create border line 
     tCell.createBorderLine(0.8, UIColor.black) 

     dismissKeyboard() 
    } 
}  

は別のクラスで下境界線方式を設定されている:

//Set Bottom border line. 
func setBottomBorder(textField: UITextField, width: CGFloat,color : UIColor) { 

    let border = CALayer() 
    border.name = "BottomBorder" 
    border.borderColor = color.cgColor 
    border.frame = CGRect(x: 0, y: textField.frame.size.height - width, 
         width: textField.frame.size.width, height: width) 
    border.borderWidth = width 
    textField.borderStyle = UITextBorderStyle.none 
    textField.layer.addSublayer(border) 
    textField.layer.masksToBounds = true 
} 

あなたは私のコードでそのボタンを見ることができます送信し、ボタンを編集します。私は境界線の色と幅を変更しています。色と幅はありません。

私も何か試しましたが、幅の変更はできません。

override func layoutSublayers(of layer: CALayer) { 
    if (layer == self.layer) 
    { 
     layer.borderWidth = 0.3 
    } 
}  

//MARK:- TextField Delegate 
extension EditProductCell : UITextFieldDelegate 
{ 
    func textFieldDidBeginEditing(_ textField: UITextField) { 
     if let sublayers = textField.layer.sublayers { 
      for layer: CALayer in sublayers { 
       if layer.name == "BottomBorder" { 
        layer.removeFromSuperlayer() 
       } 
      } 
     } 

     setBottomBorder(textField: textField, width: 0.8, color: hexStringToUIColor(hex: "#55ACEE")) 
    } 

    //TextField Did End Editing 
    func textFieldDidEndEditing(_ textField: UITextField) { 
     if let sublayers = textField.layer.sublayers { 
      for layer: CALayer in sublayers { 
       if layer.name == "BottomBorder" { 
        layer.removeFromSuperlayer() 
       } 
      } 
     } 

     setBottomBorder(textField: textField, width: 0.8,color : UIColor.black) 
     textField.resignFirstResponder() 
    } 

    //TextField Return Key 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

     // Try to find next responder 
     if let nextField = textField.superview?.viewWithTag(textField.tag + 1) as? UITextField 
     { 
      nextField.becomeFirstResponder() 
     } 
     else 
     { 
      textField.resignFirstResponder() 
     } 

     return false 
    } 
} 
+0

'textField.layer.masksToBounds = true'を削除してみてください – Yannick

+0

試してみましたが動作しません。 ありがとう – kishor0011

+0

また、http://stackoverflow.com/questions/7666863/uiview-bottom-borderをご覧ください。 – Yannick

答えて

0

数字が1より大きい場合は、コードが機能します。私は境界線の幅が1より大きい必要があると思う。

+0

申し訳ありませんが、私はあなたを取得していません。 私は正確に何をしなければなりませんか? ありがとうございました – kishor0011

+0

ボーダー幅を1から2まで試してみませんか? – Carol

+0

うん。 変更なし。 同じ問題。 ありがとう – kishor0011

関連する問題