ios - sierra - xcode reference




Layout automatico continua ad allungare UIImageView (4)

Con l'autolayout, i valori in Impostazioni dimensioni vengono praticamente ignorati.

Potresti aspettarti che se un numero viene digitato nelle caselle di Impostazioni dimensioni, Xcode crea automaticamente dei vincoli per riflettere ciò che hai digitato, ma non lo fa. È necessario creare vincoli "Pin" da soli per l'altezza e la larghezza di UIImageView .

  • Seleziona la visualizzazione dell'immagine sullo storyboard
  • Fai clic sul pulsante "Pin" in basso a destra nella schermata dello storyboard
  • Digita la dimensione desiderata nei campi "Larghezza" e "Altezza" e assicurati che le caselle siano spuntate
  • Fai clic sul pulsante "Aggiungi 2 vincoli"

Quando hai finito, dovresti essere in grado di vedere i tuoi vincoli in Impostazioni dimensioni sul lato destro dello schermo (le caselle viola)

Sto usando il layout automatico e mi sta facendo impazzire. Ho fatto tutto il possibile per impedire a UIImageView di dilagare ovunque. Non ho idea del perché lo faccia. Ho provato a utilizzare i vincoli, risolvendo i problemi di layout automatico. Per ora, l'unica soluzione stava girando il layout automatico stesso.

Qualcuno potrebbe dirmi perché xcode sta ignorando completamente i miei limiti? Mi aspetto che UIImage rimanga 320x320 quando lo imposto esplicitamente, ma noooooooo ....

Voglio pubblicare immagini, ma il sito non me lo consente e vorrei aggiungere del codice a questa domanda in modo che sia più specifico, ma non c'è assolutamente alcun codice. Ho semplicemente trascinato "UIImageView" dallo storyboard, l'ho reso piccolo, ho impostato i vincoli così come sono, e sta semplicemente ignorando il mio codice.


Ho avuto lo stesso problema. Ho aggiunto un UIImageView in una cella prototipo e ho voluto allinearlo accanto al testo, ma ha mantenuto lo stretching dell'immagine quando ho applicato i vincoli. Nel mio caso, ho modificato la proprietà "Modalità" per la visualizzazione immagine in "Aspect Fit" e ha funzionato correttamente.


Puoi provare ad aggiungere UIImageView a livello di codice. Chiama questo codice nel tuo metodo viewDidLoad o dove vuoi.

UIImageView *yourImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50.0f, 50.0f, 320.0f, 320.0f)]; // x and y coordinates, width and height of UIImageView
[yourImageView setImage:[UIImage imageNamed:@"your_image.png"]];
[yourImageView setContentMode:UIViewContentModeCenter]; // you can try use another UIViewContentMode

[self.view addSubview:yourImageView];

Ti consigliamo di assicurarti che UIImageView sia impostato su clip ai limiti. In caso contrario, l'immagine verrà fuoriuscire dalla vista e sembrerà non allungarsi correttamente (anche se in realtà lo è).

Nel builder dell'interfaccia, assicurati che la casella Sottoview clip sia selezionata.

Se non stai usando il generatore di interfacce, il seguente codice farà la stessa cosa:

yourImageView.clipsToBounds = YES;




storyboard