Trong iOS 8 có một vấn đề hoặc một tính năng. Khi MPVolumeView được hiển thị, nó đang được làm động, như mở rộng từ 0 đến chiều rộng của nó. Làm cách nào để khắc phục hành vi đó? Không có vấn đề như vậy trên iOS 7.MPVolumeView hình ảnh động trên iOS 8
Trả lời
Tôi xác nhận rằng sự cố này vẫn tồn tại trong iOS 8. Giải pháp được cung cấp bởi Anastasia trong một trong các nhận xét ở trên (với khối lượng ghi đè) có vẻ hoạt động nhưng chỉ khi nút tuyến đường không hiện tại. Khi có mặt, thanh trượt sẽ chồng lên nút tuyến đường và nó không thể được nhấn nữa.
tôi đã thực hiện một thay đổi đơn giản của giải pháp của mình, có lẽ ai đó có thể sử dụng nó như một cách giải quyết, cho đến khi Apple sửa lỗi đó hoặc giải pháp tốt hơn được cung cấp.
- (CGRect)volumeSliderRectForBounds:(CGRect)bounds
{
if (self.showsRouteButton) {
NSInteger spacer = 10; /* Space between Route button and Volume slider */
CGRect routeButtonRect = [self routeButtonRectForBounds:bounds];
bounds.size.width -= (routeButtonRect.size.width + spacer);
}
return bounds;
}
Tôi không thích mã hóa cứng giá trị bộ đệm, nhưng tôi không thể tìm cách tính toán động.
Một cách có thể để loại bỏ hành vi này là phân lớp MPVolumeView và thực hiện một số công việc bổ sung sau [super layoutSubviews]
.
- (void)layoutSubviews
{
[super layoutSubviews];
[self cg_recursiveRemoveAnimationsOnView:self];
}
- (void)cg_recursiveRemoveAnimationsOnView:(UIView *)view
{
[view.layer removeAllAnimations];
for (UIView *subview in view.subviews) {
[self cg_recursiveRemoveAnimationsOnView:subview];
}
}
Thao tác này sẽ xóa tất cả hoạt ảnh được chèn. Vì vậy, hãy chắc chắn đó là những gì bạn muốn, vì đây là khá overkill. Người ta cũng có thể chỉ cần loại bỏ các position
và bounds
hình ảnh động (xem removeAnimationForKey:
).
Tại sao không sử dụng 'UIView.performWithoutAnimation' - đơn giản hơn nhiều –
Bạn có nghĩa là gói' [siêu layoutSubviews] 'với' -performWithoutAnimation'? Điều này đã không làm việc như các hình ảnh động dường như được tạo ra ở nơi khác và cũng không phải mọi lớp trong MPVolumeView có một đại biểu 'UIView'. – CipherCom
Nó sẽ thực hiện một chức năng tương tự như phương pháp của bạn. Nếu không, hoạt hình là một hoạt hình CA, thậm chí còn đặc biệt hơn. –
- 1. UISearchBar trong UITableViewHình ảnh động lạ trên iOS 7/8
- 2. iOS 8 Share Extension Hình ảnh Safari
- 3. MPVolumeView tùy chỉnh Hình ảnh không theo chiều dọc được làm thẳng đứng từ iOS 5.1
- 4. MPVolumeView không còn hoạt động trên các thiết bị iOS 7
- 5. Tải hình ảnh từ khung công tác iOS 8
- 6. Hình ảnh thanh tab iOS 8, Xcode 6
- 7. ptrace trên iOS 8
- 8. iOS 8 UITableViewRowAction: Vuốt sang trái, ảnh?
- 9. iOS Code Hoạt động trên iOS 9 chứ không phải trên iOS 8?
- 10. Loại bỏ trình đơn âm thanh gốc MPVolumeView của iOS
- 11. đối tượng UIImage Unarchive trả CGSizeZero hình ảnh sử dụng NSKeyedUnarchiver trên iOS 8
- 12. Hình ảnh iOS quay trên nút bấm
- 13. Bìa ảnh bìa album cho iOS 8
- 14. Lỗi 8 UIImagePickerController trên iOS
- 15. Nhận kích thước màn hình trên iOS 8
- 16. Setting cameraViewTransform động dành cho iOS 8
- 17. IE7 và 8 Treo ngẫu nhiên trên hình ảnh CSS
- 18. Hiển thị NSMutableAttributedString trên iOS 8
- 19. Làm cách nào để buộc hình ảnh khởi chạy thay vì màn hình khởi chạy trên iOS 8?
- 20. EXC_BAD_ACCESS chỉ trên xcode 8 chạy iOS 8
- 21. Xcode 8 Hoàn thành hình ảnh
- 22. iOS 8 Khởi chạy tệp hình ảnh - Thanh điều hướng và thanh trạng thái
- 23. Chia sẻ hình ảnh trong iMessage bằng Bàn phím tùy chỉnh trong iOS 8
- 24. Buộc tải các hình ảnh trên iOS để preload
- 25. Hoạt ảnh UIView cố gắng thay đổi kích thước khung không hoạt động trong iOS 8 nhưng trong iOS 7
- 26. tranh biếm họa - Hình ảnh động trong iOS
- 27. Khi nào chụp ảnh màn hình tự động ios?
- 28. Thêm văn bản động trên hình ảnh
- 29. Cảnh báo có thể hoạt động trên iOS 7 và iOS 8
- 30. Lấy văn bản từ hình ảnh trên ios (xử lý hình ảnh)
Yep, điều này chắc chắn trông giống như một lỗi. Nó chỉ xảy ra lần đầu tiên MPVolumeView dụ được thêm vào một superview. Nếu bạn xóa nó và thêm nó một lần nữa, nó sẽ chỉ xuất hiện như mong đợi. –
tôi nộp một radar vài ngày trước cho vấn đề này: http://openradar.appspot.com/radar?id=5308200412774400 –
tôi đã cùng một vấn đề và những gì giúp được subclassing MPVolumeView và phương pháp duy nhất trọng '- (CGRect) volumeSliderRectForBounds: (CGRect) giới hạn { giới hạn trả về; } '. Thật không may nó là một cách giải quyết mặc dù. Và tôi đã không kiểm tra làm thế nào nó hoạt động nếu nút tuyến đường (cho airplay ví dụ) nên được trình bày. Mặt khác, Apple không còn hiển thị nút này trong các ứng dụng, vì nó được trình bày trong Trung tâm điều khiển từ iOS7, vì vậy tôi cũng không hiển thị nó và cho tôi giải pháp này hoạt động tốt. – Anastasia