我想在我的应用程序中实现动态类型,因此该应用程序可以适应用户字体首选项。我有一个带有3个静态单元格的表格视图。第一个和第二个具有UITextField
,它们工作正常,没有任何问题。第三个是具有UITextView
的单元格不会缩放。 “动态类型”设置为“开”,字体为“正文”。
这是我的UITableViewController
中的代码。
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 100
setupTextFieldsAndTextView()
}
func setupTextFieldsAndTextView() {
emailTF.keyboardType = UIKeyboardType.asciiCapable
titleTF.keyboardType = UIKeyboardType.asciiCapable
messageTextView.keyboardType = UIKeyboardType.asciiCapable
emailTF.returnKeyType = .next
titleTF.returnKeyType = .next
messageTextView.returnKeyType = .default
emailTF.delegate = self
titleTF.delegate = self
messageTextView.delegate = self
}
和UITableView
代表
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
我希望具有与iOS日历应用程序相同的设计。基于所选字体类型但UITextView
仍然可以滚动的单元格比例,并且用户也可以选择其中的文本。屏幕中的UITextView
是带有文本占位符“ Notes”的单元格。
答案 0 :(得分:0)
为UITextView使用GrowingTextView
答案 1 :(得分:0)
需要检查UITextView
的几个步骤:
Automatically Adjusts Font
属性必须。Scrolling Enabled
属性。选中所有这些元素后,单元格高度和UITextView
字体大小应适应所需的大小。
我建议您观看WWDC 2017视频中的这段detailed summary,该视频完美地说明了如何使用动态类型构建应用。
答案 2 :(得分:0)
请检查此值以获取tableView中textView的动态高度。
// Tableview Delegate Method
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "NotesCell", for: indexPath) as! NotesCell
cell.txtViewNotes.tag = indexPath.row
cell.txtViewNotes.delegate = self
return cell;
}
// Textview Delegate Method
func textViewDidChange(_ textView: UITextView) {
adjustFrames(textView)
}
// Custom Method
func adjustFrames(_ textView: UITextView) {
let indexPath = IndexPath(row: textView.tag, section: 0)
let cell = yourTableView.cellForRow(at: indexPath) as! NotesCell
UIView.setAnimationsEnabled(false);
self.yourTableView.beginUpdates()
cell.constNoteHeight.constant = textView.contentSize.height
textView.beginFloatingCursor(at: CGPoint.zero)
textView.endFloatingCursor()
self.yourTableView.endUpdates()
UIView.setAnimationsEnabled(true);
}
注意: constNoteHeight 是textView的高度常数。