Ho un sacco di problemi nel far sì che le immagini si adattino, con le proporzioni corrette all'interno di UIImageView.Rendere UIImage adatto a UIImageView all'interno di UIView
Tutte le immagini inserite inizialmente da un plist in dati di base si adattano con il rapporto di aspetto corretto, ma come le immagini vengono aggiunte utilizzando l'app (dalla libreria esistente di immagini), le immagini in due di tre visualizzazioni appaiono più grandi del visualizza se stesso, in modo che venga mostrato solo l'angolo in alto a sinistra della foto. Nello screenshot sottostante, la riga superiore della tabella mostra un'immagine aggiunta tramite il plist e le due righe successive (MY RECORDS) mostrano le foto che non sono limitate alla vista.
Le celle nella vista sopra vengono creati nel modo consueto, e quindi configurati nel suo proprio metodo, dove è proprietà sono definite.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
self.configureCell(cell, indexPath: indexPath)
return cell
}
func configureCell(cell: UITableViewCell, indexPath: NSIndexPath)
{
let record = fetchedResultsController.objectAtIndexPath(indexPath) as! Record
cell.textLabel!.text = record.subject
cell.detailTextLabel!.text = record.shortDetails
if let imageArray = imagesForRecord(record)
{
if imageArray.count > 0
{
cell.imageView?.contentMode = .ScaleAspectFit
cell.imageView?.clipsToBounds = true
cell.imageView?.image = imageArray[Int(record.featureImageIndex)]
}
}
}
Ma l'immagine non viene ridimensionata, né è ritagliata entro i limiti di imageView. Le immagini che erano inizialmente caricate, come l'orso, non richiedevano contentMode o clipToBounds da impostare.
Ho lo stesso problema in un controller di visualizzazione diverso (chiamarlo VC2), ma questa vista è definita utilizzando storyboard. Ho una vista UIImage vincolata a tutti i lati di un UIView con limiti di dimensioni fissi. La vista UIImage è impostata su Aspect Fit, ma quando imposto un'immagine dalla libreria dei dispositivi appare come sopra: il rapporto di aspetto è corretto, ma viene mostrato solo l'angolo superiore dell'immagine.
In un altro punto di vista, ho quasi lo stesso layout storyboard come VC2, ma qui funziona come previsto. Non riesco a vedere alcuna differenza nei vincoli, proprietà e le stesse foto vengono utilizzate (dalla libreria).
non riesco a vedere alcuna differenza, e non riesco a immaginare come eseguire il debug da qui. Senza dubbio sto fraintendendo qualcosa di abbastanza semplice su Aspect Fit o su come applicarlo.
Sei sicuro che sei impostazioni .contentMode e .clipsToBounds sulla ImageView destra? UITableViewCell ha una proprietà imageView per impostazione predefinita che viene utilizzata per visualizzare celle di base. Inoltre, in che funzione stai chiamando quei due? – Mercurial
Nello storyboard, l'identificativo della cella è 'Cell', che viene quindi utilizzato nel metodo delegate tableView.cellForRowAtIndexPath per istanziare la cella con tableView.dequeueReusableCellWithIdentifier. Questa cella viene quindi passata a un metodo configureCell in cui vengono aggiunti contentMode e clipToBounds (insieme a testo e immagine) prima di essere restituiti dal metodo delegate. – DrWhat
utilizza .UIViewContentMode.ScaleAspectFill. non puoi ridimensionare l'immagine come quello che ti aspetti ora. Io prendo Whatsapp, hanno lo stesso problema a quello che stai affrontando. quindi si limitano a utilizzare .ScaleAspectFill per tutte le immagini. – karthik