2013-11-28 5 views
7

Jetzt entwickle ich ein Projekt, in dem ich das Bild mit Rahmen wie unten Form zeigen muss.Ändern Sie die Standardform von UIImageview Form Rechteck

enter image description here

Wie kann ich das tun? Ich habe keine Ahnung, das zu tun. Bitte irgendeine Idee zu lösen.

+0

Ist es ein statisches Bild oder eine Art Steuerung und Sie müssen Berührungsereignisse verarbeiten, wenn der Benutzer das Bild berührt? Erstellen Sie das Bild in einem Bildbearbeitungsprogramm oder müssen Sie das Bild programmgesteuert erstellen? – yurish

+0

@yurish: statisches Bild..Das Benutzerbild Download aus dem Internet .. Dann zeigen Sie das Bild in oben Schritt – Seeker

+0

Ich habe die folgende Antwort akzeptiert, aber es wird nicht die genaue Form, die ich oben erwähnt ... – Seeker

Antwort

1

Hier ist, wie Sie den Pfad für die Maskierung erstellen:

- (UIBezierPath *)curvedRectWithFrame:(CGRect)frame radius:(CGFloat)radius 
{ 
    double halfFrameHeight = ((double)frame.size.height/2); 

    // Check if the radius is too small. 
    if (radius < halfFrameHeight) { 
     radius = halfFrameHeight; 
    } 

    CGFloat arcAngle = asin(halfFrameHeight/radius); 
    CGFloat centerX = frame.origin.x + (frame.size.width - radius); 
    CGFloat centerY = frame.origin.y + halfFrameHeight; 

    UIBezierPath *path = [UIBezierPath bezierPath]; 

    [path moveToPoint:frame.origin]; 
    [path addLineToPoint:CGPointMake(centerX + radius * cos(arcAngle), frame.origin.y)]; 
    [path addArcWithCenter:CGPointMake(centerX, centerY) radius:radius startAngle:-arcAngle endAngle:arcAngle clockwise:YES]; 
    [path addLineToPoint:CGPointMake(frame.origin.x, path.currentPoint.y)]; 
    [path closePath]; 

    return path; 
} 

Dann können Sie die Form Maske auf Ihr Bild anwenden:

const CGFloat kCurveRadius = 500.; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = yourImageView.bounds; 
maskLayer.path = [self curvedRectWithFrame:maskLayer.bounds radius:kCurveRadius].CGPath; 

yourImageView.layer.mask = maskLayer; 
9

Kann dieser Code wird Ihnen helfen, ...

UIBezierPath *maskPath; 
maskPath = [UIBezierPath bezierPathWithRoundedRect:YourImageVIew.bounds byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(50.0, 50.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = YourImageVIew.bounds; 
maskLayer.path = maskPath.CGPath; 
YourImageVIew.layer.mask = maskLayer; 
+0

: Kannst du bitte etwas über imgtest erzählen? – Seeker

+0

Ich weiß nicht, welches Objekt das ist .. – Seeker

+0

oh Entschuldigung das ist dein Originalbild –

Verwandte Themen