2016-08-31 17 views
6

Hiện tại, tôi đang sử dụng UIVisualEffectView để áp dụng hiệu ứng nhòe cho hình ảnh.Có thể sửa đổi độ mờ của UIVisualEffectView trong khi kéo trong iOS?

Tôi có UIScrollView. Khi tôi kéo xuống scrollView, trong phương thức "scrollViewDidScroll" của tôi, tôi đang thay đổi alpha của UIVisualEffectView. Hành vi hiện tại của điều này là bán kính mờ thay đổi trơn tru khi tôi kéo xung quanh trong chế độ xem.

Vấn đề là, tất nhiên, tôi không phải làm điều này. Nhận cảnh báo về việc thay đổi giá trị alpha của UIVisualEffectView.

Tôi đã nhìn thấy mọi người nói để làm một chuyển đổi suôn sẻ của mờ sử dụng một hình ảnh động, như thế này đây: How to fade a UIVisualEffectView and/or UIBlurEffect in and out?

Tuy nhiên, tôi đã không nhìn thấy bất cứ điều gì cho phép tôi làm điều này trong suốt, nói một Pan cử chỉ hay gì đó. Ý tôi là, nếu tôi thiết lập một hình ảnh động với một số lượng thời gian, tất cả đều tốt. Nhưng làm điều này trong khi kéo?

Trả lời

7

Có một cách :)

Như bạn đã thấy, bạn có thể làm động từ ảnh hưởng nil để ảnh hưởng như UIBlurEffectStyleDark vì vậy nếu chúng ta thêm một hình ảnh động và sau đó tạm dừng hình ảnh động của lớp chúng ta có thể kiểm soát tiến độ thực hiện hiệu ứng bằng cách điều chỉnh lớp của timeOffset!

- (void) setupBlur { 
    // Setup the blur to start with no effect 
    self.blurredEffectView = [[UIVisualEffectView alloc] initWithEffect:nil]; 

    // Add animation to desired blur effect 
    [UIView animateWithDuration:1.0 animations:^{ 
     [self.blurredEffectView setEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    }]; 

    // Pause layer animations 
    self.blurredEffectView.layer.speed = 0; 
} 

Điều chỉnh mờ giữa 0.0 và 1.0 (thời gian hoạt hình):

- (void) adjustBlur:(CGFloat)blurIntensity { 
    self.blurredEffectView.layer.timeOffset = blurIntensity; 
} 
  • Lưu ý: điều này sẽ không hoạt động trên iOS 8 nơi UIBlurEffect hình ảnh động không được hỗ trợ.
+1

Cảm ơn vì điều này. Đây chỉ là những gì tôi đang tìm kiếm! –

+1

: D Lưu ý bổ sung: đôi khi có vẻ như hoạt ảnh sẽ không hoạt động cho đến khi chế độ xem phụ 'UIVisualEffectView' được thêm vào phân cấp chế độ xem. Tôi thường khởi tạo và thêm hiệu ứng mờ trong 'viewDidLoad' và thêm hoạt ảnh sau vào' viewDidAppear: '. – Warpling

+0

Tôi đang sử dụng cùng một phương thức trong Swift. Tuy nhiên, có một lỗi - khi ứng dụng chuyển sang nền và sau đó quay lại, hoạt ảnh sẽ tự động đạt đến trạng thái kết thúc và không hoạt ảnh nữa. Các bạn có gặp vấn đề đó không? Bạn có một ý tưởng làm thế nào để làm việc xung quanh đó? – suntime

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