Tôi gặp sự cố khi nhận kết quả nhất quán từ UITextViews trong UITableViewCell bằng NSAttributedStrings.Cách liên tục vẽ NSAttributedString trong UITextView trong UITableViewCell
Bên trong - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
headerText = [[UITextView alloc]initWithFrame:CGRectZero];
[headerText setUserInteractionEnabled:NO];
headerText.tag = HEADER_TEXT;
[cell.contentView addSubview:headerText];
} else {
headerText = (UITextView*)[cell.contentView viewWithTag:HEADER_TEXT];
}
//...setting up attributed strings
[headerText setAttributedText:headerString];
CGSize headerSize = [headerText sizeThatFits:CGSizeMake(246, CGFLOAT_MAX)];
headerText.frame = CGRectMake(45, 8, headerSize.width, headerSize.height);
Kết quả:
Như bạn có thể thấy, hai cái đầu tiên xuất hiện để vẽ văn bản theo cách mà tôi mong đợi/muốn. Trong hai phương thức cuối cùng của phương thức UITextView sizeThatFits trả về một kích thước lớn hơn nhiều, sau đó được yêu cầu để vẽ văn bản và văn bản trở thành trung tâm trong khung chứ không phải chặt chẽ ở phía trên cùng của khung. Đây là một vấn đề bởi vì tôi muốn có thể bố trí các khung nhìn khác dựa trên chiều cao khung uitextview.
Sau khi cuộn ra khỏi khung và lại:
Bây giờ nó được thậm chí người lạ, khi các tế bào được tái sử dụng, và chuỗi do được thiết lập lại. uitextview vẽ văn bản theo cách không nhất quán.
Thậm chí Thiết lập contentInsets để
headerText.contentInset = UIEdgeInsetsMake(-8, -8, -8, -8);
Không cung cấp bất kỳ loại kết quả phù hợp:
Và Sau cuộn với contentinset thiết lập:
Có khác thuộc tính trên UITextView cho phép tôi nhận được hành vi thứ tôi cần?
Tôi đang sử dụng UITextView vì nó triển khai Giao thức UITextInput. Điều này cho phép tôi tạo các nút trên một số đoạn văn bản nhất định. Tôi thừa nhận rằng việc vẽ trực tiếp văn bản sẽ thuận lợi. Tôi nên tìm hiểu thư viện iOS nào để đạt được điều đó? Cảm ơn bạn lần nữa vì đã trả lời câu hỏi. –
Không có "thư viện" là cần thiết để vẽ văn bản. Đó là một phần của UIKit. – matt
Tôi nghĩ rằng tôi có thể cần phải sử dụng CoreText để có thể xác định liệu một liên lạc có ở trên đầu dòng hoặc dòng văn bản đã cho hay không. –