22 Stimmen

Was ist der beste Weg, die Farbe/die Ansicht des Offenlegungspfeil-Accessoire-Ansicht in einer Tabellenansichtszelle in iOS zu ändern?

Ich muss die Farbe des disclosureIndicatorView-Zubehörs in einer UITableViewCell ändern. Ich denke, es gibt zwei Möglichkeiten, um dies zu erreichen, aber ich kann nicht herausfinden, welche optimal ist. Hier ist also, was ich tun kann.

Es gibt eine Eigenschaft von UITableViewCell - accessoryView. Also kann ich setAccessoryView:(UIView *)view verwenden und view als das UIImageView übergeben, das das gewünschte Bild enthält.

Ich habe eine Hilfsklasse geschrieben, die die Inhaltsansicht (Dinge wie Hintergrundfarbe, Hinzufügen anderer Dinge usw.) für meine Zelle erstellt, und ich füge diese Inhaltsansicht der Zelle in UITableViewDelegate hinzu. Die andere Option besteht darin, ein UIImage zu zeichnen, indem die drawRect-Methode der Hilfsklasse CustomContentView überschrieben wird.

Bei Option 1 - kann ich die Dinge auf die Art und Weise von Apple erledigen. Einfach die Ansicht geben und sie erledigen den Rest. Aber ich vermute, dass das Hinzufügen eines neuen UIView-Objekts zu jeder Zeile sich als eine schwere Objektzuweisung erweisen könnte und die Bildrate verringert. Im Vergleich zu nur einem UIImage-Objekt in meiner contentView. Ich glaube, UIImage ist leichter als UIView.

Bitte werft etwas Licht darauf, Leute, und helft mir, mich zu entscheiden.

0 Stimmen

Sicherlich wünscht man sich, dass man das UIImageView einfach auf alle Zeilen teilen könnte.

0 Stimmen

Siehe eine Bibliothek. Ändern Sie ganz einfach die Farben aller Arten von accessoryType. MSCellAccessoryView

0 Stimmen

Alte Frage, aber bisher noch keine zufriedenstellende Antwort erhalten. Hier ist, was Sie wirklich gefragt haben: stackoverflow.com/a/35427599/378024

0voto

Verticon Punkte 2309

Eine Swift 3-Version der CocoaNetics Lösung

public class DisclosureIndicator: UIControl {

    public static func create(color: UIColor?, highlightedColor: UIColor?) -> DisclosureIndicator{
        let indicator = DisclosureIndicator(frame: CGRect(x: 0, y: 0, width: 11, height: 15))
        if let color = color { indicator.color = color }
        if let color = highlightedColor { indicator.highlightedColor = color }
        return indicator
    }

    public var color: UIColor = .black
    public var highlightedColor: UIColor = .white

    override public init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = .clear
    }

    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        backgroundColor = .clear
    }

    override public func draw(_ rect: CGRect) {
        super.draw(rect)

        let context = UIGraphicsGetCurrentContext()!;

        // (x,y) ist die Spitze des Pfeils
        let x = self.bounds.maxX - 3.0;
        let y = self.bounds.midY;

        let length : CGFloat = 4.5;
        context.move(to: CGPoint(x: x - length, y: y - length))
        context.addLine(to: CGPoint(x: x, y: y))
        context.addLine(to: CGPoint(x: x - length, y: y + length))
        context.setLineCap(.round)
        context.setLineJoin(.miter)
        context.setLineWidth(3)

        context.setStrokeColor((isHighlighted ? highlightedColor : color).cgColor)

        context.strokePath()
    }

    override public var isHighlighted: Bool {
        get {
            return super.isHighlighted
        }
        set {
            super.isHighlighted = newValue
            setNeedsDisplay()
        }
    }
}

-1voto

TheAbhiGoyal Punkte 7

Ändern Sie die Farbe des Tönungs der Tabellenansichtszelle. Überprüfen Sie den Screenshot, um das gleiche über das Storyboard zu tun.

2 Stimmen

Diese Antwort ist bedingt. Das Häkchen-Accessoire respektiert die Tönungsfarbe der Zelle, jedoch der Offenbarungsindikator (die in dieser spezifischen Frage angegebene Eigenschaft) nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X