Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dotted / Dashed border for UITextView / UITextField

I want to set a Dotted / Dashed border for my UITextField and UITextView.

How can I do that? I know that, I can set border with this line of code:

[self.textFieldCardTitle.layer setBorderWidth:1.0];
[self.textFieldCardTitle.layer setBorderColor:[[UIColor whiteColor] CGColor]];  

Notice: I already have the idea to add a UIImageView behind the UITextView and set there an image with dashed border. But I don't want to solve it that way.

like image 720
brush51 Avatar asked May 30 '12 09:05

brush51


3 Answers

You could try, for example, next approach:

1) Create image that will represent your border (for example: one dot and space)

2) Add image to project.

3) Set border (as in code in your question) and set color with pattern:

[self.textFieldCardTitle.layer setBorderWidth:6.0];
[self.textFieldCardTitle.layer setBorderColor:[[UIColor colorWithPatternImage:[UIImage imageNamed:@"dashed_white.png"]] CGColor]];

As border is drawn along 4 sides (left, right, bottom, top) you should use square image: for example, pixel in middle is black and pixels around it are transparent. So copies of that image will be placed around the view.

like image 110
Nekto Avatar answered Nov 19 '22 21:11

Nekto


Just use following code for Dotted / Dashed Border around UIView or UITextField or any other view:-

CAShapeLayer * _border = [CAShapeLayer layer];
_border.strokeColor = [UIColor redColor].CGColor;
_border.fillColor = nil;
_border.lineDashPattern = @[@4, @2];
[YOURVIEW.layer addSublayer:_border];

//for a square effect
_border.path = [UIBezierPath bezierPathWithRect:YOURVIEW.bounds].CGPath;
//for a rounded effect
//_border.path = [UIBezierPath bezierPathWithRoundedRect:YOURVIEW.bounds cornerRadius:txtUserName.frame.size.height / 2].CGPath;

_border.frame = YOURVIEW.bounds;

For more details, Refer this Answer.

Hope, this is what you're looking for. Any concern get back to me. :)

like image 8
Meet Doshi Avatar answered Nov 19 '22 21:11

Meet Doshi


Here's what I did with Swift:

self.textFieldCardTitle.layer.borderWidth = 3
self.textFieldCardTitle.layer.borderColor = (UIColor(patternImage: UIImage(named: "dot")!)).CGColor

Free bonus, I attached the pics below. Unless StackOverflow changes its background, you probably won't see them as they are white squares on a white background, so you'll find the urls below as well.

dotdot@2xdot@3x

  • http://i.stack.imgur.com/X7PfM.png -> rename it to dot.png
  • http://i.stack.imgur.com/IemhF.png -> rename it to [email protected]
  • http://i.stack.imgur.com/CSjZT.png -> rename it to [email protected]
like image 4
Arnaud Avatar answered Nov 19 '22 22:11

Arnaud