Ce code fonctionne correctement sur ios10. J'obtiens mon étiquette et un bouton image représentant la photo de profil de l'utilisateur, de forme ronde.. d'accord. mais lorsque je lance le simulateur xcode 9 ios11, l'image est étirée. Le cadre du bouton doit être de 32x32, à la vérification sur le simulateur et en demandant à xcode de décrire la vue, j'obtiens une sortie de 170x32 ou quelque chose du genre.
Voici mon code.
let labelbutton = UIButton( type: .system)
labelbutton.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
labelbutton.setTitleColor(UIColor.white, for: .normal)
labelbutton.contentHorizontalAlignment = .right
labelbutton.titleLabel?.font = UIFont.systemFont(ofSize: 18.00)
let button = UIButton(type: .custom)
button.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 32, height: 32)
button.setTitleColor(UIColor.white, for: .normal)
button.setTitleColor(UIColor.white, for: .highlighted)
var buttomItem : UIBarButtonItem = UIBarButtonItem()
buttomItem.customView = button
buttomItem.target = self
buttomItem.action = "ToLogin"
var labelItem : UIBarButtonItem = UIBarButtonItem()
labelItem.customView = labelbutton
labelItem.target = self
labelItem.action = "ToLogin"
if let user = PFUser.current() {
print("LOGIN : vérification de l'existence de l'utilisateur ")
labelbutton.setTitle(USERNAME, for: UIControlState.normal)
labelbutton.sizeToFit()
if(user["profile_photo_url"] != nil) {
print(" TROUVÉ PROFILE PHOTO URL NON NIL ET C'EST \(user["profile_photo_url"])")
let photoURL = user["profile_photo_url"] as! String
let a = LoginService.sharedInstance
a.downloadImage(url: photoURL, complete: { (complete) in
if (complete) {
button.setImage(LoginService.sharedInstance.profile_photo! , for: UIControlState.normal)
button.layer.cornerRadius = 0.5 * button.bounds.size.width
// button.imageView!.contentMode = .scaleAspectFit
// button.imageView!.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
//button.imageView!.contentMode = .scaleAspectFit
//button.imageView!.clipsToBounds = true
//button.imageView!.layer.cornerRadius = 60
button.clipsToBounds = true
self.NavigationItem.rightBarButtonItems = [buttomItem,labelItem]
}
})
} else {
self.NavigationItem.rightBarButtonItem = labelItem
}
print(" LE CADRE DU BOUTON EST \(button.frame)")
} else {
labelbutton.setTitle("Connexion", for: UIControlState.normal)
labelbutton.sizeToFit()
self.NavigationItem.rightBarButtonItem = labelItem
}
0 votes
Avez-vous utilisé la vue de pile dans la barre de navigation?
0 votes
@V.Khambir Nop... :/
0 votes
Est-ce que ce rapport de bug est quelque part?
0 votes
IOS 11 utilise AutoLayout pour agencer les éléments de navigation. Au cas où vous auriez besoin de déplacer le
UIButton
à l'intérieur deUIBarButtonItem
, utilisezbutton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: -20)