Мне нужно добавить маску сверху и туловище экрана, как это.
Добавьте маску размытия сверху и снизу экрана в Objective-C
Ответ 1
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];
}
Где self.BlurView
- тип UIView
.
Вы можете сохранить это для своего верхнего и нижнего вида. И можете настроить рамку blurEffectView.frame
в соответствии с вашими верхними и нижними размерами.
Надеюсь, это поможет вам.
Ответ 2
Я могу придумать способ достижения этого эффекта. Но вам не нужна маска размытия, вам нужно использовать обтравочную маску.
1- представляет собой контроллер модального представления с представлением, содержащим UIVisualEffectView в обратном направлении, и представление scrollview/tableview/collection спереди, которое смещено на 40 пикселей (или сколько угодно) сверху и снизу. 2- Добавьте маску в прокрутку, используя черно-белое изображение, адаптированное к задаче, вы можете добавить маску, используя следующий код:
var maskImage = UIImage(name: "yourMask")
var maskLayer = CALayer()
maskLayer.frame = scrollView.bounds()
maskLayer.contents = maskImage.CGImage
scrollview.layer.mask = maskLayer
3- Альтернативно, вы также можете использовать CAGradientLayer для достижения такого же эффекта (это будет работать лучше при масштабировании). Есть много решений о переполнении стека о том, как создать слой градиента, например этот: программно создать изображение градиента в iOS
Сказав, что я не понимаю, почему ваш вопрос проголосовали. Я думаю, что это очень хороший вопрос.
Надеюсь, это поможет!
Ответ 3
- Настройте UIImageView с фоновым изображением.
-
Добавьте UIVisualEffectView сверху:
UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; vs.frame = self.view.bounds; [self.view addSubview:vs];
- Добавьте UIView сверху и поместите в него UITableView (или что-то еще).
-
Добавьте этот код:
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];
Отрегулируйте переменные для собственных нужд, вам нужно будет изменить местоположение.
Вы не "размываете" вершины и днища, но постепенно маскируете их через слой градиента.