2016-07-25 2 views
0
-(void)setTopRightCornerWithRadious:(CGFloat)radious View:(UIView*)vw 
{ 
    UIGraphicsGetCurrentContext(); 
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:vw.bounds byRoundingCorners:UIRectCornerTopRight cornerRadii:CGSizeMake(radious, radious)]; 
    [maskPath closePath]; 
    CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
    maskLayer.frame = vw.bounds; 
    maskLayer.path = maskPath.CGPath; 
    vw.layer.mask=maskLayer; 

    if (vw.layer.borderColor) { 
     UIColor *color=[UIColor colorWithCGColor:vw.layer.borderColor]; 
     [color setStroke]; 
     maskLayer.accessibilityPath.lineWidth=1.0f; 
     [maskLayer.accessibilityPath stroke]; 
    } 
} 
-(void)setAllBorderForView:(UIView*)vw Color:(UIColor*)color Thickness:(CGFloat)thick 
{ 
    if (vw) { 
     vw.layer.borderWidth=thick; 
     vw.layer.borderColor=color.CGColor; 
    } 
} 

enter image description hereНарисуйте рамку вокруг полигона

Я хотел бы нарисовать границу, окруженное этими двумя кнопки. Я много раз пытался использовать CAShapeLayer и UIBezierPath, но не смог, может быть, я пропустил что-то. Некоторые из них решают эту проблему с помощью UIView, но я этого не хочу. Я хочу только решить проблемы только с помощью CAShapeLayer и/или UIBezierPath.

Вот мой код кода ... Где моя ошибка ???? Сначала я установил границу, затем попытался установить угол. В течение нескольких часов цвет границы может существовать или не существовать.

+0

что dooesn't похожи на полигон. Вам нужна граница для каждой из этих кнопок или одна граница для двух кнопок? –

+0

@TejaNandamuri Существует две отдельные кнопки, и я хочу разместить границу, окруженную ими индивидуально, то есть граница будет для каждой из кнопок. И так как я не могу сказать, является ли это квадратом или прямоугольником, вот почему я упоминаю его как многоугольник. Возможно, я ошибаюсь, пожалуйста, поправьте меня. Заранее спасибо :) – SAM

+0

Если вы хотите иметь пространство между границей и кнопкой, самым простым способом было бы добавить два пути безье. Один для кнопки, а другой для границы, вы можете добавить штрих к кнопке безье. –

ответ

0

В пользовательском классе кнопки вы установите:

UIBezierPath outerPAth= [UIBezierPath bezirePath]; 
    [[UIColor WhiteColor] setStroke]; 
    outlinePath.lineWidth=5.0; 
    [outlinePath stroke]; 
0

Если вам просто нужно иметь границу вокруг кнопки, добавьте обводку пути кнопку Безье.

enter image description here

- (void)drawRect: (CGRect)frame 
{ 
UIBezierPath* rectangle2Path = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(x,y,widht,height) byRoundingCorners: UIRectCornerTopRight cornerRadii: CGSizeMake(17.25, 17.25)]; 
[rectangle2Path closePath]; 
[UIColor.grayColor setFill]; 
[rectangle2Path fill]; 
[UIColor.redColor setStroke]; 
rectangle2Path.lineWidth = 1; 
[rectangle2Path stroke]; 
} 

Или Если вы хотите, чтобы пространство между границей и путем кнопки Безье, то вам необходимо добавить два пути Безье. Один для кнопки, а другой для границы.

enter image description here

- (void)drawRect: (CGRect)frame 
{ 

    UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(CGRectGetMinX(frame), CGRectGetMinY(frame), floor((CGRectGetWidth(frame)) * 1.00000 + 0.5), floor((CGRectGetHeight(frame)) * 1.00000 + 0.5)) byRoundingCorners: UIRectCornerTopRight cornerRadii: CGSizeMake(28, 28)]; 
    [rectanglePath closePath]; 
    [UIColor.redColor setStroke]; 
    rectanglePath.lineWidth = 1; 
    [rectanglePath stroke]; 


    UIBezierPath* rectangle2Path = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(CGRectGetMinX(frame) + 7, CGRectGetMinY(frame) + 8, 103, 62) byRoundingCorners: UIRectCornerTopRight cornerRadii: CGSizeMake(26, 26)]; 
    [rectangle2Path closePath]; 
    [UIColor.grayColor setFill]; 
    [rectangle2Path fill]; 
} 
+0

Я обновил свой вопрос. На самом деле ситуация подобна выше. Я могу назвать только два метода, которые должны сделать угол вместе с цветом границы. – SAM

Смежные вопросы