Je dois implémenter le concept de dropdown
dans Xcode.
Pour cela, j'utilise une UIPickerview
.
Ce pickerView est chargé lorsqu'un événement dans un champ de texte est exploité (sur un événement textFieldDidBeginEditing:).
Question:
Y a-t-il un moyen, que je puisse ajouter une image à TextField
?
L'image est comme une flèche indiquant à l'utilisateur qu'il est possible d'afficher une dropdown
lorsque textfield
est tapé. Comment puis-je le créer?
UITextField a une propriété rightView
, si vous avez une image comme celle-ci- alors vous pouvez facilement définir l'objet ImageView sur rightView:
UITextField *myTextField = [[UITextField alloc] init];
myTextField.rightViewMode = UITextFieldViewModeAlways;
myTextField.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"downArrow.png"]];
À Swift:
textField.leftViewMode = UITextFieldViewMode.Always
textField.leftView = UIImageView(image: UIImage(named: "imageName"))
Vous pouvez mettre la UIImageView
à la gauche de votre UITextField
.
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(96, 40, 130, 20)];
[textField setLeftViewMode:UITextFieldViewModeAlways];
textField.leftView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"searchIccon.png"]];
Pour ajouter les marges et les marges appropriées entre l'image et le champ de texte, essayez ceci sous le code . Développer la réponse de @ King-Wizard.
Ici, la hauteur de mon TextField est de 44 Vérifiez l’image jointe pour référence.
Version rapide:
emailTF.leftViewMode = .Always
let emailImgContainer = UIView(frame: CGRectMake(emailTF.frame.Origin.x, emailTF.frame.Origin.y, 40.0, 30.0))
let emailImView = UIImageView(frame: CGRectMake(0, 0, 25.0, 25.0))
emailImView.image = UIImage(named: "image1")
emailImView.center = emailImgContainer.center
emailImgContainer.addSubview(emailImView)
emailTF.leftView = emailImgContainer
hey mate vous voulez une vue déroulante puis voir cette vue déroulante personnalisée ..
et pour cette exigence utilisez ce code
UITextField *txtstate =[[UITextField alloc]init]; [txtstate setFrame:CGRectMake(10, 30,170, 30)];
txtstate.delegate=self;
txtstate.text=@"Fruits";
txtstate.borderStyle = UITextBorderStyleLine;
txtstate.background = [UIImage imageNamed:@"dropdownbtn.png"];
[txtstate setAutocorrectionType:UITextAutocorrectionTypeNo];
[self.view addSubview:txtstate];
et définissez votre style de bordure de champ de texte none ..
Étape 1: Ajoutez cette classe à votre projet et ajoutez-la à la classe de votre textFiled dans l'inspecteur d'identité,
class MyCustomTextField: UITextField {
@IBInspectable var inset: CGFloat = 0
@IBInspectable var leftImage: String = String(){
didSet{
leftViewMode = UITextFieldViewMode.Always
leftView = UIImageView(image: UIImage(named: leftImage))
}
}
override func textRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(bounds, inset, inset)
}
override func editingRectForBounds(bounds: CGRect) -> CGRect {
return textRectForBounds(bounds)
}
override func leftViewRectForBounds(bounds: CGRect) -> CGRect {
return CGRectInset(CGRectMake(0, 2, 40, 40), 10, 10) //Change frame according to your needs
}
}
Étape 2: Définissez les encarts de texte et l'image de gauche à partir du générateur d'interface.
Étape 3: Profitez-en.
UITextField a la propriété suivante:
@property(nonatomic, retain) UIImage *background
exemple:
UITextField *myTextField = [[UITextField alloc] init];
myTextField.background = [UIImage imageNamed:@"myImage.png"];
emailTextField.leftViewMode = .alway
let emailImgContainer = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 25))
let emailImg = UIImageView(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
emailImg.image = UIImage(named: "SomeIMG")
emailImgContainer.addSubview(emailImg)
emailTextField.leftView = emailImgContainer