将底线边框添加到TextView – iOS

将底线边框添加到TextView – iOS,第1张

概述向TextView添加底线边框的最佳方法是什么? 我试过这个,但似乎它不起作用.它受textview的滚动功能的影响,并且正在TextView的中间绘制线条 func addBottomBorderWithColor(color: UIColor, width: CGFloat) { let border = CALayer() border.backgroundC 向TextVIEw添加底线边框的最佳方法是什么?
我试过这个,但似乎它不起作用.它受textvIEw的滚动功能的影响,并且正在TextVIEw的中间绘制线条

func addBottomborderWithcolor(color: UIcolor,wIDth: CGfloat) {        let border = CALayer()        border.backgroundcolor = color.CGcolor        border.frame = CGRectMake(0,self.frame.size.height - wIDth,self.frame.size.wIDth,wIDth)        self.layer.addSublayer(border)        self.layer.masksToBounds = true }

编辑:
TextVIEw具有动态高度.

解决方法 更新:

我想了很多关于我原来的解决方案.

如果你是UITextVIEw的子类来添加底线,那么底线最好是文本视图本身的子视图,而不是它的超级视图.

最后,我找到了一个解决方案,它可以添加底线作为TextVIEw本身的子视图,当用户滚动TextVIEw文本时,底线不会移动.在视图控制器中,您还可以动态更改TextVIEw的框架,底线也会粘在底部.

这是参考代码:

import UIKitclass TextVIEw: UITextVIEw {    var border: UIVIEw    var originalborderFrame: CGRect    var originalinsetBottom: CGfloat    deinit {        removeObserver(self,forKeyPath: "contentOffset")    }    overrIDe var frame: CGRect {        dIDSet {            border.frame = CGRectMake(0,frame.height+contentOffset.y-border.frame.height,frame.wIDth,border.frame.height)            originalborderFrame  = CGRectMake(0,frame.height-border.frame.height,border.frame.height);        }    }    overrIDe func observeValueForKeyPath(keyPath: String?,ofObject object: AnyObject?,change: [String : AnyObject]?,context: UnsafeMutablePointer<VoID>) {        if keyPath == "contentOffset" {            border.frame = CGRectOffset(originalborderFrame,contentOffset.y)        }    }    func addBottomborderWithcolor(color: UIcolor,wIDth: CGfloat) {        border.backgroundcolor = color        border.frame = CGRectMake(0,frame.height+contentOffset.y-wIDth,self.frame.wIDth,wIDth)        originalborderFrame = CGRectMake(0,frame.height-wIDth,wIDth)        textContainerInset.bottom = originalinsetBottom+wIDth    }}

注意:因为我曾经在Objective-C中编写代码,所以我不熟悉Swift.上面的代码仅供您参考(虽然我已经测试了相应的Objective-C代码,但它按预期工作):

>如您所见,没有初始化代码.我试图编写这样的代码,但它总是显示错误,我仍然不知道这一点.只需确保将以下代码添加到TextVIEw初始化代码中:

border = UIVIEw()addSubvIEw(border)originalinsetBottom = textContainerInset.bottomaddobserver(self,forKeyPath: "contentOffset",options: .New,context: nil)

>我不熟悉可选值的概念,包装,解包……所以你应该添加?,!如果需要的话.

原始答案:

你的代码中的self是否意味着TextVIEw?

如果是这样,当您将边框添加为TextVIEw的子图层时,边框将上下移动.

尝试添加边框作为TextVIEw超级视图的子图层而不是TextVIEw本身.

这是代码(注意我将边界从CALayer更改为UIVIEw):

func addBottomborderWithcolor(color: UIcolor,wIDth: CGfloat) {     let border = UIVIEw()     border.frame = CGRectMake(self.frame.origin.x,self.frame.origin.y+self.frame.height-wIDth,textVIEw.frame.wIDth,wIDth)     border.backgroundcolor = color     self.supervIEw!.insertSubvIEw(border,aboveSubvIEw: textVIEw) }

这是捕获:

PS.我建议你从宽度到高度更改第二个参数名称,因为宽度在此上下文中是不明确的.

总结

以上是内存溢出为你收集整理的将底线边框添加到TextView – iOS全部内容,希望文章能够帮你解决将底线边框添加到TextView – iOS所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1072931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存