2013-12-17 25 views
12

Với iOS 7, một hoạt ảnh đẩy mới được tạo, sẽ trượt bộ điều khiển chế độ xem được đẩy lên trên cùng của cấu trúc phân cấp. Nhưng khi các hình ảnh động xảy ra, iOS dường như không có hai điều để thay đổi thiết kế của bộ điều khiển nhìn từ trên xuống:iOS 7 UINavigationController Đẩy bóng hoạt ảnh

Một cái bóng được thêm vào:

A shadow of view controller when animating

Và một lớp phủ nhẹ trên bộ điều khiển xem phía dưới:

A light overlay

Trong hầu hết các ứng dụng, đây không phải là vấn đề. Tuy nhiên, tôi hiện đang làm việc trên một ứng dụng với thiết kế hoàn hảo pixel và tôi sử dụng bộ điều khiển xem với nền rõ ràng. Nhưng chức năng này vẫn giữ nguyên và lớp phủ ánh sáng xuất hiện trên bộ điều khiển chế độ xem. Bởi vì nền là một gradient màu trắng, lớp phủ ánh sáng này (trên ảnh chụp màn hình 2) rất dễ nhìn thấy và khi hoạt ảnh hoàn tất, nó sẽ bị xóa mà không có hoạt ảnh, điều này làm cho nó dễ nhận thấy và gây phiền nhiễu.

Tôi biết tôi có thể tạo hình ảnh động tùy chỉnh và hiệu ứng chuyển tiếp, nhưng tôi tự hỏi:

Có cách nào để loại bỏ (hoặc sửa đổi) overlay và bóng tối ánh sáng này, mà không cần phải tạo ra hiệu ứng chuyển tiếp tùy chỉnh?

Cảm ơn sự giúp đỡ của bạn.

+0

bạn có quản lý để giải quyết vấn đề này không? –

+0

Không phải không có sửa đổi nặng. – Legoless

+0

Bạn đã thử sử dụng API chuyển đổi bộ điều khiển chế độ xem tùy chỉnh của iOS 7 chưa? objc.io/issue-5/view-controller-transitions.html – rounak

Trả lời

1

Đây không phải là giải pháp thanh lịch nhất, nhưng tôi đã thấy mọi người sử dụng hoạt ảnh UIImage để hiển thị những gì họ muốn được hiển thị. Vì vậy, bạn có thể:

  • Ảnh chụp màn hình các đến UIViewController
  • Animate sự xuất hiện của một UIImageView
  • Gọi pushViewController:animated:, đi qua NO cho animated:
  • Tháo UIImageView
  • Một lần nữa, một chút của một hack, nhưng có lẽ đó là giải pháp tốt nhất cho kịch bản của bạn.

    +0

    Thx, ý tưởng hay! –

    1

    Hãy thử proxy này

    [[UIImageView appearanceWhenContainedIn:NSClassFromString(@"_UIParallaxDimmingView"), nil] setAlpha:0.0f]; 
    

    Tôi không biết nếu Apple cho phép điều này hay không vì nó sử dụng một API tư nhân. Sẽ cập nhật khi ứng dụng được gửi.

    +0

    Giải pháp này chỉ hoạt động nếu bạn không có bất kỳ chế độ xem hình ảnh nào khác trong hệ thống phân cấp điều khiển điều hướng của bạn ... vì vậy, không phải là siêu hữu ích. – patr1ck

    +0

    @ patr1ck Bạn có thể phân lớp UIImageView và sử dụng phân lớp của bạn ở mọi nơi cần thiết. Sau đó, bạn có thể chỉ định proxy này chỉ cho UIImageView của Apple sẽ không áp dụng cho lớp con của bạn. – Gaston

    +1

    Điều này có được chấp thuận không? – bangerang

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