2015-09-12 9 views
6

मैं कोडस्विफ्ट UITextField आइकन स्थिति सेट

textField.leftView = leftImageView 

यह आइकन दे ऊपर से इस कोड को निकालने की तरह समाधान नहीं मिला इस Image is close to textfield border

के लिए

var leftImageView = UIImageView() 
leftImageView.image = leftImage 
textField.leftView = leftImageView 
textField.leftViewMode = UITextFieldViewMode.Always 
leftImageView.frame = CGRectMake(15, 10, 15, 20) 
textField.addSubview(leftImageView) 

ओ/पी का उपयोग कर UITextField में आइकन जोड़ें संरेखण उचित है लेकिन जब भी इस enter image description here

जैसे आइकन पर टेक्स्ट फ़ील्ड टेक्स्ट संपादित करना प्रारंभ करें 10

मैं ओ/पी की तरह सभी के इस

enter image description here

+0

स्विफ्ट 3.0 में इस शानदार लाइब्रेरी को आजमाएं https://github.com/Sahilberi/ImageTextField – Sahil

उत्तर

12

सबसे पहले, आप निश्चित रूप से नहीं छवि लेबल करने के लिए एक subview के रूप में जोड़ना चाहिए चाहते हैं। leftView संपत्ति सेट करने के लिए पर्याप्त है।

textField.addSubview(leftImageView) // Delete this line 

दूसरा, बाएं दृश्य के फ्रेम पर लागू होने वाले किसी भी एक्स या वाई ऑफसेट को अनदेखा किया जाता है। टेक्स्ट फ़ील्ड केवल दृश्य के आकार की परवाह करेगा। यदि आप छवि के चारों ओर पैडिंग जोड़ना चाहते हैं, तो एक विकल्प कंटेनर व्यू का उपयोग करना और इसके अंदर छवि दृश्य को स्थिति देना है।

let leftImageView = UIImageView() 
leftImageView.image = leftImage 

let leftView = UIView() 
leftView.addSubview(leftImageView) 

leftView.frame = CGRectMake(0, 0, 30, 20) 
leftImageView.frame = CGRectMake(0, 0, 15, 20) 

textField.leftView = leftView 

एक अन्य विकल्प UITextField उपवर्ग और leftViewRectForBounds ओवरराइड करने के लिए किया जाएगा।

2

इसे आजमाएं। आपकी मदद कर सकता है

var padding: Float = 20 

var envelopeView: UIImageView = UIImageView(frame: CGRectMake(padding, 0, 30, 30)) 
envelopeView.image = UIImage.imageNamed("comment-128.png") 
envelopeView.contentMode = UIViewContentModeScaleAspectFit 

var viewLeft: UIView = UIView(frame: CGRectMake(padding, 0, 30, 30)) 
viewLeft.addSubview(envelopeView) 
textField.leftView.setFrame(envelopeView.frame) 
textField.leftView = viewLeft 
textField.leftViewMode = UITextFieldViewModeAlways 

var viewRight: UIView = UIView(frame: CGRectMake(textField.frame.size.width - (textField.frame.size.width + 30 + padding), 0, 30, 30)) 
viewRight.addSubview(envelopeView) 
textField.rightView.setFrame(envelopeView.frame) 
textField.rightView = viewRight 
textField.rightViewMode = UITextFieldViewModeAlways 
4

@hennes वाक्य रचना जिक्र करते हुए, वहाँ कुछ वाक्य रचना तेज में लापता CGRect वाक्य रचना की तरह बदल गया है कर रहे हैं और userNameTextField.leftViewMode = .always तेज वाक्य रचना यह मेरे लिए काम किया साथ

याद आ रही है:

let leftImageView = UIImageView() 
    leftImageView.image = UIImage(named: "email") 

    let leftView = UIView() 
    leftView.addSubview(leftImageView) 

    leftView.frame = CGRect(x: 0, y: 0, width: 40, height: 40) 
    leftImageView.frame = CGRect(x: 10, y: 10, width: 20, height: 20) 
    userNameTextField.leftViewMode = .always 
    userNameTextField.leftView = leftView 
1

स्विफ्ट 3.1

extension UITextField 
{ 
    enum Direction 
    { 
     case Left 
     case Right 
    } 

    func AddImage(direction:Direction,imageName:String,Frame:CGRect,backgroundColor:UIColor) 
    { 
     let View = UIView(frame: Frame) 
     View.backgroundColor = backgroundColor 

     let imageView = UIImageView(frame: Frame) 
     imageView.contentMode = .center 
     imageView.image = UIImage(named: imageName) 

     View.addSubview(imageView) 

     if Direction.Left == direction 
     { 
      self.leftViewMode = .always 
      self.leftView = View 
     } 
     else 
     { 
      self.rightViewMode = .always 
      self.rightView = View 
     } 
    } 
} 
+1

इस @jethava योगेश –

+0

yourtextbox का उपयोग कैसे करें। AddImage (दिशा: .Left, imageName: "imageName", फ़्रेम: CGRect (x: 0, y: 0, चौड़ाई: 100, ऊंचाई: 40), पृष्ठभूमि रंग: UIColor.red) –

संबंधित मुद्दे