我试图根据显示的行数使我的uitextview角半径动态化。从我的后端检索文本,因此行数会有所不同......
我在使用框架创建文本视图后尝试在viewDidLoad中设置角半径但由于某些原因不起作用。我出于某种原因假设它返回0。
非常感谢任何帮助。
(我在这里删除了很多代码只是为了保持简单。一切都被正确地添加到子视图中。所有内容都是以编程方式添加的 - 这里根本没有使用故事板。文本视图显示为预期的角半径)
在viewDidLoad中:
questionOneTextBox.layer.cornerRadius = self.questionOneTextBox.frame.height * 0.5
questionTwoTextBox.layer.cornerRadius = self.questionTwoTextBox.frame.height * 0.5
答案 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
}
}
这个代码看起来像。
答案 1 :(得分:0)
调用viewDidLoad
时,视图不会被布局(大小)。将您的角半径调整为viewDidLayoutSubviews
或viewWillAppear
,此时调整大小已经发生。
答案 2 :(得分:0)
您是否将clipsToBounds
设为true?这可能会导致您的问题。我希望这有帮助