2010-12-21 7 views
1

Ich muss eine Ansicht (ein uibutton) von seltsamer Form erstellen. Ist das mit quarz2d möglich? i verwendet diesen Code für buil meine UIView UnterklasseErstellen Sie eine nicht-rechteckige UIView

 
- (void)drawRect:(CGRect)rect { 

    // Drawing code 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextMoveToPoint(context, 100, 100); 
    CGContextAddLineToPoint(context, 150, 150); 
    CGContextAddLineToPoint(context, 100, 200); 
    CGContextAddLineToPoint(context, 50, 150); 
    CGContextAddLineToPoint(context, 100, 100); 
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextFillPath(context); 
} 

aber dies ist ein Unentschieden im Inneren ein Standard UIView (rechteckig UIView)

+0

Stellen Sie sicher, dass Sie NEIN für die isOpaque-Methode zurückgeben. – ughoavgfhw

+0

*** Paintcode *** ist brilliant. http://www.paintcodeapp.com – Fattie

Antwort

5

Haben Sie diese beiden Beiträge auf nicht-rechteckigen UIButtons ausgecheckt? Die Ansichten bleiben rechteckig, aber sie verarbeiten nur Berührungsereignisse, bei denen das Alpha größer als Null ist.

Ole Begemann's implementation

Jeff Lamarche's implementation

die UIView Nicht sicher alles andere als rechteckige Formen sein können, aber diese Implementierungen können sie anders machen handeln.

+0

danke, ich lese diesen zwei Artikel und sind sehr nützlich. Aber ich bin auf der Suche nach Direct Draw nicht rechteckige Ansicht, weil ich keine PNG-Dateien haben und Ansicht sind zur Laufzeit gebaut. es gibt eine Methode, um die Zeichnung in einem uiview zu erhalten (draw in drawRect Methode) – ignazioc

+0

Ich sehe, so lösen die Beispiele nur die Behandlung der Berührungsereignisse nicht die Zeichnung, die Sie noch vermissen. Ich muss zugeben, dass das außerhalb meiner Kenntnisse liegt, aber hoffentlich kann jemand anderes einen Einblick geben, wie man die drawRect-Methode überschreibt. – cesarislaw

Verwandte Themen