在包含文本的UIlabel周围绘制虚线边框

时间:2013-11-26 13:32:20

标签: ios objective-c iphone uilabel

任何人都可以解释哪个是在UILabel周围绘制虚线矩形边框的正确方法,可以调整大小和移动,我搜索了很多,找到了2种方法:

首先是,

_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 = @[@4, @2];

[self.layer addSublayer:_border];

在你的布局子视图中,把它放在:

_border.path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
_border.frame = self.bounds;

其次是,  可以通过在NSAttributed

中的UILabel字符串周围绘制边框来完成

的问题:

  1. 由于基于用户触摸调整UILabel的大小,我已经在改变其大小的触摸方法,我需要写一堆线来调整边框图层的大小
  2. 没有得到方法来绘制边框而不是文本本身。
  3. 任何人都可以帮助分类优化方法。

1 个答案:

答案 0 :(得分:1)

以下代码更易于理解

   CAShapeLayer *shapeLayer = [CAShapeLayer layer];
        CGRect shapeRect = CGRectMake(0.0f, 0.0f, 200.0f, 100.0f);
        [shapeLayer setBounds:shapeRect];
        [shapeLayer setPosition:CGPointMake(self.coreImageView_.frameX, self.coreImageView_.frameBottom - self.coreImageView_.frameHeight/2)];
        [shapeLayer setFillColor:[[UIColor clearColor] CGColor]];
        [shapeLayer setStrokeColor:[[UIColor whiteColor] CGColor]];
        [shapeLayer setLineWidth:2.0f];
        [shapeLayer setLineJoin:kCALineJoinRound];
        [shapeLayer setLineDashPattern:
        [NSArray arrayWithObjects:[NSNumber numberWithInt:5],
        [NSNumber numberWithInt:5],
          nil]];

了解更多check this或者你可以简单地为UITextfeild放一张图片并拉伸它。或者尝试

[yourView.layer setBorderWidth:5.0];
[yourView.layer setBorderColor:[[UIColor colorWithPatternImage:[UIImage imageNamed:@"DotedImage.png"]]