2016-03-09 28 views

Trả lời

1

Tôi có thể nghĩ ra một cách để đạt được hiệu ứng này. Nhưng những gì bạn cần không phải là một mặt nạ mờ, bạn cần phải sử dụng một mặt nạ cắt.

1- trình bày bộ điều khiển chế độ xem có chế độ xem UIVisualEffectView ở mặt sau và chế độ xem cuộn/xem/xem bộ sưu tập ở mặt trước được bù đắp 40px (hoặc tuy nhiên bạn muốn) từ trên xuống dưới. 2- Thêm một mặt nạ để xem di chuyển sử dụng một hình ảnh màu đen và trắng phù hợp với nhiệm vụ, bạn có thể thêm mặt nạ sử dụng đoạn mã sau:

var maskImage = UIImage(name: "yourMask") 
var maskLayer = CALayer() 
maskLayer.frame = scrollView.bounds() 
maskLayer.contents = maskImage.CGImage 
scrollview.layer.mask = maskLayer 

3- Ngoài ra, bạn cũng có thể sử dụng để đạt được các CAGradientLayer cùng một hiệu ứng (điều này sẽ làm việc tốt hơn với việc mở rộng quy mô). Có rất nhiều giải pháp về ngăn xếp tràn trên cách tạo lớp gradient, như thế này: Create gradient image programmatically in iOS

Có nói rằng tôi không hiểu tại sao câu hỏi của bạn bị bỏ phiếu. Tôi nghĩ đó là một câu hỏi hoàn hảo hay.

Hy vọng điều này sẽ hữu ích!

2
if (!UIAccessibilityIsReduceTransparencyEnabled()) {   
     self.BlurView.backgroundColor = [UIColor clearColor]; 
     UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
     UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 
     blurEffectView.frame = self.view.bounds; 
     [blurEffectView setAlpha:1.0]; 
     [self.BlurView addSubview:blurEffectView];   
    } 

Nơi self.BlurView là loại UIView.

Bạn có thể giữ điều này cho chế độ xem trên và dưới. Và có thể điều chỉnh khung blurEffectView.frame theo kích thước trên và dưới của bạn.

Hy vọng điều này sẽ giúp bạn.

1
  1. Thiết lập UIImageView với hình nền của bạn.
  2. Thêm UIVisualEffectView trên đầu trang:

    UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    vs.frame = self.view.bounds; 
    [self.view addSubview:vs]; 
    
  3. Thêm một UIView trên đầu trang, và đặt UITableView của bạn (hoặc bất kỳ) trong đó.
  4. Thêm mã này:

    CAGradientLayer * layer = [CAGradientLayer layer]; 
    layer.frame = tableHolder.bounds; 
    layer.colors = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; 
    layer.locations = @[@0.90,@0.99,@1.0]; 
    layer.startPoint = CGPointMake(0.0, 1.0f); 
    layer.endPoint = CGPointMake(0.0f, 0.0f); 
    tableHolder.layer.mask = layer; 
    tableHolder.layer.masksToBounds = true; 
    [tableHolder.layer insertSublayer:layer atIndex:0]; 
    

Điều chỉnh các biến cho nhu cầu riêng của bạn, bạn sẽ phải thay đổi vị trí.

Bạn không 'làm mờ' các đầu và đáy, nhưng dần dần che chúng ra thông qua lớp gradient.

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