我想为UITextField
和UITextView
设置虚线/虚线边框。
我该怎么做?我知道,我可以设置这行代码的边界:
[self.textFieldCardTitle.layer setBorderWidth:1.0];
[self.textFieldCardTitle.layer setBorderColor:[[UIColor whiteColor] CGColor]];
注意:我已经有了在UIImageView
后面添加UITextView
并在那里设置带有虚线边框的图片的想法。但我不想那样解决。
答案 0 :(得分:8)
例如,您可以尝试下一种方法:
1)创建代表边框的图像(例如:一个点和一个空格)
2)将图像添加到项目中。
3)设置边框(如问题中的代码所示)并使用pattern设置颜色:
[self.textFieldCardTitle.layer setBorderWidth:6.0];
[self.textFieldCardTitle.layer setBorderColor:[[UIColor colorWithPatternImage:[UIImage imageNamed:@"dashed_white.png"]] CGColor]];
当沿4个边(左,右,下,上)绘制边框时,应使用方形图像:例如,中间的像素为黑色,周围的像素为透明。因此,该图像的副本将放置在视图周围。
答案 1 :(得分:5)
只需使用以下代码围绕UIView
或UITextField
的虚线/虚线边框或任何其他视图: -
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;
有关详细信息,请参阅此Answer。
希望,这就是你要找的东西。任何关注都会回复给我。 :)
答案 2 :(得分:4)
这是我用Swift做的事情:
self.textFieldCardTitle.layer.borderWidth = 3
self.textFieldCardTitle.layer.borderColor = (UIColor(patternImage: UIImage(named: "dot")!)).CGColor
免费奖金,我附上了下面的照片。除非StackOverflow更改其背景,否则您可能不会看到它们,因为它们是白色背景上的白色方块,因此您也可以找到下面的URL。
答案 3 :(得分:0)
迅速5,了解@Meet Doshi的答案
class CustomTextField: UITextField{
let dashBorder = CAShapeLayer()
override init(frame: CGRect) {
super.init(frame: .zero)
dashBorder.strokeColor = UIColor.lightGray.cgColor
dashBorder.fillColor = nil
dashBorder.lineDashPattern = [4, 2]
layer.addSublayer(dashBorder)
}
override func layoutSubviews() {
super.layoutSubviews()
dashBorder.path = UIBezierPath(roundedRect: bounds, cornerRadius: 5).cgPath
dashBorder.frame = bounds
}
}