UITextView的动态角半径

时间:2017-05-26 22:34:39

标签: ios swift swift3 cornerradius

我试图根据显示的行数使我的uitextview角半径动态化。从我的后端检索文本,因此行数会有所不同......

我在使用框架创建文本视图后尝试在viewDidLoad中设置角半径但由于某些原因不起作用。我出于某种原因假设它返回0。

非常感谢任何帮助。

(我在这里删除了很多代码只是为了保持简单。一切都被正确地添加到子视图中。所有内容都是以编程方式添加的 - 这里根本没有使用故事板。文本视图显示为预期的角半径)

在viewDidLoad中:

    questionOneTextBox.layer.cornerRadius = self.questionOneTextBox.frame.height * 0.5
    questionTwoTextBox.layer.cornerRadius = self.questionTwoTextBox.frame.height * 0.5

3 个答案:

答案 0 :(得分:1)

如果您使用约束以编程方式创建文本视图,则需要调用self.questionOneTextBox.layoutIfNeeded()self.questionTwoTextBox.layoutIfNeeded()。这将初始化边界。

class ViewController: UIViewController {

    var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Create the Text View

        self.textView = UITextView()

        self.textView.text = "This text will appear in the text view."

        self.textView.backgroundColor = .lightGray

        self.view.addSubview(self.textView)

        // Set the constraints

        self.textView.translatesAutoresizingMaskIntoConstraints = false

        self.textView.widthAnchor.constraint(equalToConstant: 280).isActive = true

        self.textView.heightAnchor.constraint(equalToConstant: 60).isActive = true

        self.textView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 60).isActive = true

        self.textView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

        // This will initialise the bounds

        self.textView.layoutIfNeeded()

        // Now the this should work

        self.textView.layer.cornerRadius = self.textView.frame.height * 0.5
    }
}

这个代码看起来像。

screenshot

答案 1 :(得分:0)

调用viewDidLoad时,视图不会被布局(大小)。将您的角半径调整为viewDidLayoutSubviewsviewWillAppear,此时调整大小已经发生。

答案 2 :(得分:0)

您是否将clipsToBounds设为true?这可能会导致您的问题。我希望这有帮助