Ich bin ein bisschen ratlos. Ich habe die Layer-Eigenschaft von UIView verwendet, um die Ecken mehrerer Elemente in meiner App abzurunden. Diese eine UIImageView entspricht jedoch einfach nicht. Ich bin mir nicht sicher, was mir fehlt.
Die UIImageView (VorschauImage genannt) ist in einer Tabellenansichtszelle enthalten. Ich habe versucht, die CornerRadius-Eigenschaft auf mehrere Speicherorte (in der Zelle selbst und in dem Controller, der die Zelle erstellt) festzulegen, ohne Erfolg.
static NSString *CellIdentifier = @"MyTableViewCell";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.previewImage.layer.cornerRadius = 20; //Made it 20 to make sure it's obvious.
}
Gibt es etwas an der Art und Weise, wie Zellen geladen werden, das mir fehlt?
quelle
shouldRasterize = false
?Erwähnenswert ist auch das
dh wenn Sie dies haben
und
oder
Es wird nicht funktionieren . Sie müssen den aspectFit-Code entfernen
quelle
Das sollte funktionieren
quelle
clipsToBounds
ist eine Methode für die spätere Klasse. Glaube, es istmasksToBounds
wie oben.Ich glaube, Sie müssen festlegen:
quelle
Wenn Sie im Xcode Interface Builder das Zeichnungsattribut "Clip-Unteransichten" für die Ansicht auswählen und den Eckenradius im Code festlegen,
cell.previewImage.layer.cornerRadius = 20;
erledigt dies die Aufgabe für mich!Siehe Option "Clip-Unteransichten" in IB
quelle
Versuchen Sie dies unten Code
quelle
Versuchen Sie diesen Code: -
quelle
Denn
imageView.contentMode = .scaleAspectFill
dascornerRadius
wird nicht angewendet, wenn das Bild je nach Hardware sehr groß ist.Einige Tests mit vergrößerten Panoramabildern:
Die imageView-Abmessungen waren 160 x 100. Interessanterweise ist die neuere Hardware nicht unbedingt leistungsfähiger.
Fühlen Sie sich frei, diesen Beitrag mit mehr Testergebnissen zu bearbeiten!
quelle
quelle
Swift 4.2 Antwort:
Damit der Eckenradius funktioniert, fügen Sie das Bild zu a hinzu,
UIView
und setzen Sie diemasksToBounds
Bildeigenschaft auftrue
:Hinweis: Ersetzen Sie 20 durch das gewünschte
cornerRadius
quelle
Nichts aus den vorherigen Antworten funktioniert?
Es kann vorkommen, dass die Größe von UIImageView größer als die Bildgröße ist. Der Eckenradius kann gut eingestellt werden, ist in diesem Fall jedoch nicht sichtbar.
Schnelle Überprüfung der UIImageView-Größe nach Code: (oder verwenden Sie das Tool "UI-Hierarchie anzeigen" in XCode)
In diesem Szenario sollten Sie sicherstellen, dass UIImageView das gleiche Seitenverhältnis wie das Bild hat.
quelle