2017-01-06 10 views
0

Я компоную размытый фон, а затем прокрутку, в которую я помещаю UILabels и т. Д., Некоторые из которых я хотел бы быть яркими, а некоторые из которых я хотел бы отображать в виде белого текста.Добавление UIVibrancyEffect в UIScrollview

Это прекрасно работает при статическом представлении, поскольку функции прокрутки не нужны. Однако, учитывая, что это необходимо, я сталкиваюсь с выбором размещения UILabel в vibrancy.contentView (и добавлении ярлыка) или в scrollview (и добавлении прокрутки), но не для обоих.

EDIT:

Вот обходной путь:

UIBlurEffect * blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 
UIVibrancyEffect * vibrancy = [UIVibrancyEffect effectForBlurEffect:blur]; 

UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:blur]; 
[vs setFrame:self.view.bounds]; 
[self.view addSubview:vs]; 

scroller = [UIScrollView new]; 
scroller.frame = CGRectMake(0, 80, w, h-80); 
scroller.showsHorizontalScrollIndicator = false; 
scroller.showsVerticalScrollIndicator = false; 
scroller.delegate = self; 
[vs addSubview:scroller]; 

vsv = [[UIVisualEffectView alloc] initWithEffect:vibrancy]; 
[scroller addSubview:vsv]; 

UIView * view = [UIView new]; //WITHOUT VIBRANCY 
[vsv addSubview:view]; 

UIView * view = [UIView new]; //WITH VIBRANCY 
view.frame = CGRectMake(20, yOff, w-40, 50); 
[vsv.contentView addSubview:view]; 

vsv.frame = CGRectMake(0, 0, w, yOff); //RESIZE ALL 
scroller.contentSize = CGSizeMake(w, yOff); 

enter image description here

ответ

1

Вы можете поставить метку, что вы не хотите быть яркой в ​​поле зрения контента UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:blur];. Чем любой вид, добавленный в визуальный эффект, с UIVibrancyEffect будет ярким, и те, кто добавили визуальный эффект в UIBlurEffect, будут показаны без вибрации.

+0

Это работает, если нам не нужна прокрутка. Если это статический вид, мы можем просто разместить их там, где им нужно идти. Проблема заключается в сохранении прокрутки и вибрации. –

+1

Итак, у вас есть статическое изображение, которое должно быть размытым и прокручиваемым контентом, который должен иметь как яркие, так и неживые блоки. Поместите эффект эффекта размытия в качестве основного содержимого UIScrollView (этот вид должен иметь тот же размер, что и размер содержимого прокрутки), чем когда вы добавляете нежирные блоки для просмотра прокрутки, добавьте его в режим размытия, и когда вам нужен блок с энергией, вы должны создать отдельный UIVisualEffectView с энергией для каждого яркого блока. Это сделает весь ваш блок прокручиваемым, а некоторые из них будут иметь эффект вибрации. – look1n

+0

Да, это вариант, но он включает добавление дополнительных методов в scrollViewDidScroll, компенсирующих смещение. Я сохраняю размытие на спине, а затем добавляю скроллер, а затем добавляю виды вибрирования в скроллер. Оказывается, вам не нужно добавлять представление яркости в blur.contentView. –

Смежные вопросы