2016-10-18 2 views
3

Ich versuche, nur Ecken zum ImageView Rahmen zu zeichnen. Dazu habe ich den CAShapeLayer- und Bezier-Pfad verwendet und bin gut mit gepunkteten Linien um den UIImageView-Frame herum gearbeitet. Aber Anforderung ist etwas mehr wie, muss nur Ecken zeigen. Dinge, die ich bis jetzt versucht heißt,Zeichnen Sie nur Ecken zu ImageVIEW Rahmen

@property (strong, nonatomic)CAShapeLayer *border; 

_border = [CAShapeLayer layer]; 
_border.strokeColor = [UIColor colorWithRed:67/255.0f green:37/255.0f blue:83/255.0f alpha:1].CGColor; 
_border.fillColor = nil; 
_border.lineDashPattern = @[@40, @50]; 
[pImageView.layer addSublayer:_border]; 
_border.path = [UIBezierPath bezierPathWithRect:pImageView.bounds].CGPath; 
_border.frame = pImageView.bounds; 

ich verschiedene lineDashPattern verwendet, aber nicht in der Lage das Ergebnis zu erhalten, da ich nicht die richtige Dokumentation für lineDashPattern gefunden haben. Wie es zeichnet und alles. Jede Art von Hilfe wird

Ich möchte so etwas wie dieses

enter image description here

+0

Was ist dein Zweck? durch diesen Rahmen? Wenn das Bild in der Größe geändert wird, überprüfen Sie https://github.com/yackle/CLImageEditor mit einem guten Steuerelement für die Bildgröße. –

+0

Warum nicht mit Quartz2D Ecken in einem CALayer zeichnen? – KudoCC

+0

@KudoCC können Sie erklären, wie? –

Antwort

3

Verwenden Sie den folgenden Code, die sich für mich nützlich sein:

//1. For imageView Border 
    CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
    shapeLayer.path =[UIBezierPath bezierPathWithRect:_imgView.bounds].CGPath; 
    shapeLayer.strokeColor = [UIColor redColor].CGColor; //etc... 
    shapeLayer.lineWidth = 2.0; //etc... 
    shapeLayer.position = CGPointMake(0, 0); //etc... 
    [_imgView.layer addSublayer:shapeLayer]; 


    //2. For Outside Corner 

    float cWidth=30.0; 

    float cSpace=_imgView.frame.size.width+20-(2*cWidth); 

    NSNumber *cornerWidth=[NSNumber numberWithFloat:cWidth]; 
    NSNumber *cornerSpace=[NSNumber numberWithFloat:cSpace]; 

    CAShapeLayer *_border = [CAShapeLayer layer]; 

    _border.strokeColor = [UIColor blackColor].CGColor; 

    _border.fillColor = nil; 

    _border.lineWidth=2.0; 

    //imageView frame is (width=240,height=240) and 30+200+30=260 -->10 pixel outside imageView 
    _border.lineDashPattern = @[cornerWidth,cornerSpace,cornerWidth,@0,cornerWidth,cornerSpace,cornerWidth,@0,cornerWidth,cornerSpace,cornerWidth,@0,cornerWidth,cornerSpace,cornerWidth]; 

    _border.path = [UIBezierPath bezierPathWithRect:CGRectMake(-10, -10, _imgView.frame.size.width+20, _imgView.frame.size.height+20)].CGPath; 

    [_imgView.layer addSublayer:_border]; 

Ausgang:

img

+0

Dies funktioniert perfekt. Aber haben Sie eine Frage .. Was ist cWidth? –

+1

cWidth ist für vier Ecken Linien Breite @ SahebSingh –

+0

ohkiee ... habe es .. danke –

Verwandte Themen