2015-08-26 29 views
5

Tôi đang tìm cách định dạng văn bản của alertBody của UILocalNotification. Tôi nhận thấy rằng ví dụ ứng dụng thư đặt dòng đầu tiên từ Chủ đề và dòng thứ hai và thứ ba là bản xem trước của nội dung email. Nếu chủ đề dài hơn 1 dòng, nó bị cắt ngắn. Điều này hoạt động chính xác với phông chữ động, vì vậy bất kể kích thước văn bản nào được đặt trong trợ năng. Tôi đã cố gắng đạt được kết quả tương tự, nhưng không thành công.Định dạng văn bản của UILocalNotification.alertBody

Những gì tôi cố gắng

  1. Truncate chuỗi theo chiều dài cụ thể
  2. Bắt chuỗi kích thước với sizeWithAttributes khi sử dụng preferedFontForTextStyle

Tất cả các giải pháp này một phần làm việc, nhưng đối với một số kích thước text/thiết bị sẽ thất bại

Điều tôi đang tìm kiếm là cách tiếp cận để nhận tên phông chữ thông báo của màn hình khóa, kích thước, kerning hoặc bất kỳ thông số nào khác cần thiết để có thể đặt chính xác UILocalNotification.alertBody là chỉ 1 dòng văn bản trên bất kỳ thiết bị iOS nào có cài đặt trợ năng kích thước văn bản.

Tôi biết rằng các thuộc tính này có thể khác nhau đối với các phiên bản iOS khác nhau, nhưng iOS8 là đủ cho tôi.

Cảm ơn bạn

+0

Cảm ơn bạn đã phê duyệt và xin lỗi về phản hồi tiêu cực: trong khi đó không phải là điều bạn mong đợi, có vẻ như thông báo cục bộ và từ xa nằm trong cùng trình bao bọc và hệ điều hành không cung cấp cho bạn móc tại thời điểm hiển thị. Nó là loại dễ hiểu, vì đối với một ứng dụng để định dạng một thông báo sẽ có nghĩa là cho ứng dụng đó đang chạy, và tất nhiên bạn có thể nhận được chúng trong khi không được khởi chạy. – SwiftArchitect

Trả lời

3

Hãy để cho hệ điều hành làm việc bố trí

Gần nhất bạn sẽ nhận được là một đoán. Bạn có thể sử dụng

"\n" 

để thực thi một vận chuyển trở lại, nhưng bạn sẽ không biết chắc chắn khi sử dụng nó.

Không có hỗ trợ iOS để cho bạn biết, trước thời hạn, kích thước hoặc hướng màn hình mà thông báo của bạn sẽ đến.

Bạn đang lên chống lại các biểu ngữ:

Banners không hiển thị localNotification.alertTitle

2 notification banners, portrait and landscape

Sau đó lên chống lại đồng hồ, có thể nói:

Bạn tạo thông báo trước thời hạn. Thực tế là họ là địa phương không có lý do gì để biết tương lai sẽ giữ gì: cho tất cả những gì bạn biết, bạn có thể lên lịch 1 tháng kể từ bây giờ và người dùng có thể đã cập nhật hệ điều hành, gây ra các phông chữ hoặc hạn chế bố cục mới để áp dụng.

Nói cách khác, câu trả lời cho câu hỏi này là: Bạn cần làm việc cho Apple Computer và nhận cuộc gọi lại cục bộ trước khi thông báo được hiển thị, có tính đến ngày, không phải tùy chọn..

Notification Center


Kết luận

Sử dụng ngắnalertTitle, ngắnalertBody, có thể rắc ở đây và ở đó với \n để buộc dòng mới.

// Use '\n' to force newline 
localNotification.alertBody = "Alert fired.\nWas set for ..." 
0

Táo ứng dụng email Dòng đầu tiên là alertTitle tài sản, thời gian gần đây giới thiệu> = iOS 8.2 2015/03/09See here.

Sử dụng thuộc tính này để cung cấp mô tả ngắn gọn về lý do cảnh báo. Bạn có thể chỉ định chuỗi có văn bản bạn muốn hiển thị hoặc bạn có thể chỉ định chuỗi để sử dụng làm khóa tra cứu trong tệp Localizable.strings của ứng dụng. Giá trị mặc định của thuộc tính này là 0.

Chuỗi tiêu đề phải ngắn gọn, thường chỉ là một vài từ mô tả lý do thông báo. Apple Watch hiển thị chuỗi tiêu đề như một phần của giao diện thông báo giao diện ngắn, có không gian hạn chế.

Lưu ý thứ hai của bạn, tất cả các thông báo của alertBody đều bị cắt bớt, tùy thuộc vào độ dài của nó. Thông báo chỉ hiển thị quá nhiều ký tự để bổ sung chiều cao cụ thể của UILocalNotification. Tuy nhiên, không có vấn đề gì kích thước, nếu bạn kéo xuống trên thông báo, nó sẽ hiển thị các ký tự còn lại cung cấp có bất kỳ, giống như ứng dụng thư Apples. Bạn thể rút ngắn alertBody bạn sử dụng bất cứ điều gì method that works for you, nhưng như xa như định dạng nó trong điều kiện của UIAppearance giao thức, không có phương pháp chấp thuận bởi Apple

+0

Cảm ơn câu trả lời của bạn, nhưng 'alertTitle' không phải là dòng thông báo đầu tiên của thư. Nó thay thế tên của văn bản ứng dụng nếu thông báo được hiển thị trong trung tâm thông báo, nhưng bạn không thể nhìn thấy nó trên màn hình khóa. Ngoài ra, đối với lưu ý thứ hai - tôi biết cách cắt bớt 'alertBody', câu hỏi là cách lấy độ dài vừa với một dòng trên màn hình khóa, vì các thiết bị khác nhau có kích thước khác nhau và người dùng có thể đặt kích thước văn bản khác nhau – Petr

Các vấn đề liên quan