2010-07-31 39 views
8

Trong một ứng dụng hiển thị khối văn bản, tôi đang tăng kích thước phông chữ khi thiết bị được chuyển sang hướng ngang. Tôi không thích làm thế nào nó hoạt hình toàn bộ và sau đó đột nhiên nhảy đến kích thước mới, vì vậy tôi muốn animate sự thay đổi kích thước trong quá trình quay.iOS - Thay đổi kích thước văn bản hoạt ảnh trong UILabel hoặc UITextView?

Tôi đọc ở đâu đó mà ném thay đổi này trong khối hoạt ảnh UIView không hoạt động vì thuộc tính phông chữ không hoạt hình, vì vậy các tùy chọn của tôi để làm điều này là gì?

Để triển khai cụ thể của tôi, tôi không chỉ đơn giản là thu nhỏ số UILabel/UITextView nguyên trạng; Các giới hạn của hộp ngày càng tăng (tỷ lệ) so với kích thước phông chữ, do đó sẽ có dòng chảy lại trong văn bản. Đôi vơi tôi vậy la tôt rôi.

Chỉnh sửa: Tôi sẽ ổn khi chỉ cần mở rộng số UITextView.

Ngoài ra, tôi đã xem xét "hoạt hình" theo cách thủ công: Tôi có phương pháp đưa ra quan điểm của tôi và điều chỉnh kích thước phông chữ. Nếu tôi biết khi nào vòng quay sắp bắt đầu và thời lượng của hoạt ảnh, tôi có thể thời gian để nó hiển thị kích thước phông chữ trung gian hoặc hai ở giữa hoạt ảnh. Bất kỳ trợ giúp nào để nhận được những thứ đó sẽ được đánh giá cao.

+1

Bạn đã đạt được điều mình muốn làm chưa? Bạn có thể chấp nhận một trong các câu trả lời để đóng câu hỏi không? – MiKL

Trả lời

6

Nếu tôi biết khi nào vòng quay khoảng để bắt đầu và thời lượng hoạt ảnh ...

Vui lòng đề cập đến điều đó. Ngay trước khi hoạt ảnh bắt đầu, bộ điều khiển chế độ xem của bạn sẽ nhận được thông báo willAnimateRotationToInterfaceOrientation:duration: cung cấp cho bạn thông tin chính xác mà bạn cần.

1

Thay đổi kích thước phông chữ khi gọi didAnimateFirstHalfOfRotationToInterfaceOrientation:. Bằng cách đó, người dùng sẽ không thấy thay đổi khi xoay vòng hoàn tất. Nó sẽ là khá khó để nhìn thấy sự thay đổi kích thước phông chữ sau đó, như xoay đang xảy ra!

+0

Phương pháp đó không được gọi trừ khi bạn bật hoạt ảnh hai bước, yêu cầu thêm nội dung thủ công mà tôi thực sự muốn tránh tham gia. Nhưng dù sao thì tốt! – kbanman

6

Một tùy chọn là làm mờ văn bản cũ, thay đổi kích thước phông chữ và làm mờ nó trở lại. Thuộc tính phông chữ có thể không hoạt ảnh nhưng alpha là. Vì alpha là thuộc tính của UIView, bạn có thể xử lý tất cả các dạng xem văn bản của bạn theo cùng một cách: UILabel, UITextView, v.v. Có vẻ tốt.

+0

Tôi thích phương pháp này. – Moshe

4

Một cách để tiến hành có thể là để:

  1. Tạo một CAKeyframeAnimation
  2. Xác định tỷ lệ và luân chuyển bạn muốn đạt được trong quá trình hoạt hình rằng việc sử dụng một tập hợp các CATransform3D đối tượng
  3. Thêm những biến đổi to your keyframed animation
  4. Gửi thông báo addAnimation đến đối tượng lớp nhãn của bạn: [[label layer] addAnimation];

Dưới đây sẽ là một mẫu mã giả yourLabelUILabel bạn muốn mở rộng quy mô và xoay:

CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 

CATransform3D scaleUp = CATransform3DMakeScale(1.5, 1.5, 1); // Scale in x and y 
CATransform3D rotationScaled = CATransform3DRotate (scaleUp, 90, 0, 0, 1); // Rotate the scaled font 

[scale setValues:[NSArray arrayWithObjects: 
[NSValue valueWithCATransform3D:CATransform3DIdentity], 
[NSValue valueWithCATransform3D:rotationScaled], 
nil]]; 

// set the duration 
[scale setDuration: 1.0]; 

// animate your label layer 
[[yourLabel layer] addAnimation:scale forKey:@"scaleText"]; 

này thường là làm thế nào một văn bản nảy xung quanh sẽ được hoạt hình ví dụ.

Bạn có thể bắt đầu điều này khi thiết bị bắt đầu quay và truy xuất hoạt ảnh khi xoay màn hình để bạn có thể cập nhật nhãn của mình với tỷ lệ/vị trí thích hợp.

Bạn sẽ cần điều chỉnh để tìm thời gian và xoay vòng phù hợp.

+0

@kelso. Bạn đã đưa ra suy nghĩ/thử này chưa? – MiKL

+0

Để có được thời gian đúng và xoay đúng, bạn có thể sử dụng phương pháp được mô tả ở trên: 'willAnimateRotationToInterfaceOrientation: duration:' – MiKL

+0

@ kelso.b. Bạn đã bao giờ quản lý để làm những gì bạn muốn đạt được? Làm thế nào về việc chấp nhận một trong những câu trả lời là tốt nên câu hỏi của bạn có thể bị đóng? Chúc mừng. Mikl – MiKL

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