2017-01-10 8 views
0

5 textFields 있고 내 요구 사항 0.2 처음부터 0.2 테두리 너비를 처음에 설정해야합니다. 편집 단추를 탭 할 때 테두리 너비를 0.2에서 0.8로 변경하고 다시 제출 단추를 누릅니다. 0.8에서 테두리 너비를 변경해야합니다. 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() 
    } 
}  

다른 클래스됩니다 :

//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 
} 

당신은 내 코드 버튼에서 볼 수 있습니다

다음
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() 
    } 
}  

는 별도의 클래스에서 아래쪽 테두리 방법을 설정 여기 아래에있는 내 코드입니다 제출 및 버튼 편집. 테두리 선 색상과 너비가 바뀝니다. 색상 및 너비가 아닙니다.

나는 또한 무언가를 시도했지만 너비를 변경할 수 없습니다.

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