5

我想为我的和设置一个虚线/虚线边框UITextFieldUITextView

我怎样才能做到这一点?我知道,我可以用这行代码设置边框:

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

注意:我已经有了在UIImageView后面添加一个UITextView并设置一个带有虚线边框的图像的想法。但我不想那样解决它。

4

4 回答 4

9

例如,您可以尝试下一种方法:

1)创建将代表您的边框的图像(例如:一个点和空格)

2)将图像添加到项目中。

3)设置边框(如您问题中的代码)并使用图案设置颜色:

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

由于边框是沿 4 个边(左、右、下、上)绘制的,因此您应该使用方形图像:例如,中间的像素是黑色的,而它周围的像素是透明的。因此,该图像的副本将放置在视图周围。

于 2012-05-30T09:08:15.277 回答
7

只需对周围的虚线/虚线边框UIViewUITextField任何其他视图使用以下代码:-

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;

有关更多详细信息,请参阅此答案

希望,这就是你要找的。任何问题都可以回复我。:)

于 2016-01-04T10:47:50.507 回答
4

这是我对 Swift 所做的:

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

免费奖金,我附上了下面的图片。除非 StackOverflow 更改其背景,否则您可能不会看到它们,因为它们是白色背景上的白色方块,因此您也可以在下面找到网址。

点 点@2x 点@3x

于 2014-12-01T16:12:55.680 回答
0

Swift 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
    }

}
于 2020-08-28T03:32:27.450 回答