2013-11-26 68 views
1

可有人请解释这是周围绘制UILabel可以调整大小和移动,我已经搜索了很多的虚线矩形边框以正确的方式虚线边框,发现2种方式:周围绘制包含的UILabel文本

首先是,

_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]; 

而在你layoutsubviews,把这个:

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

二是, 它可以通过绘制AB完成为了围绕NSAttributed字符串中UILabel

问题:

  1. 由于基于用户触摸缩放的UILabel,已经我改变其尺寸的触控方法,我又需要写一堆线来调整边界层
  2. 没有得到的方法来绘制边界远离文本而不是文本本身。

任何人都可以请帮忙排序优化的方法。

+0

你需要一个'UILabel'?或者你可以使用'UITextField',并带有原生的虚线边框? – theShay

+0

尝试此.. http://stackoverflow.com/a/34589401/3908884 –

回答

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"]] 
+1

使用现代语法的最后一行变得更具可读性:''[shapeLayer setLineDashPattern:@ [@ 5,@ 5]];' – DarkDust

+0

是图像是选项,但其框架必须根据UILabel(可调整大小,可移动)进行调整,类似地,我们可以通过CAShapeLayer进行调整。如果我们通过CAShapeLayer绘制虚线边框,它的边框也必须根据UILabel的大小和位置进行调整,但是这不起作用(在设置了UILabel框架的In Touch Method中,我们也设置了图层框架,但边框层不移动沿着UILabel)。还有哪一个更好,还有什么其他好方法 – user1740045

+0

@ user1740045你能遇到'CATextLayer'吗? –