2015-12-17 4 views
4

У меня возникли проблемы с применением UIVibrancyEffect для моих UIButtons в iOS сегодня виджетах. Я хочу, чтобы они хотели кнопку по умолчанию «Изменить» в разделе Today УВЕДОМЛЕНИЕ центра:Заголовок UIButton не отображается при применении UIVibrancyEffect

Today widget

Как вы можете видеть на скриншоте, кнопка по умолчанию является динамичной и выглядит намного лучше.

Я попытался заменить виджет View с UIVisualEffectView вроде этого:

UIVisualEffectView effectView = new UIVisualEffectView(UIVibrancyEffect.CreateForNotificationCenter()); 
effectView.Frame = this.View.Bounds; 
effectView.AutoresizingMask = this.View.AutoresizingMask; 
UIView oldView = this.View; 
this.View = effectView; 
effectView.ContentView.AddSubview(oldView); 
this.View.TintColor = UIColor.Clear; 

И это, кажется, работает, но названия моих кнопок становятся яркими, а также (я хочу, чтобы они оставались черными):

enter image description here

Есть ли способ предотвратить появление ярлыков кнопок при использовании UIVibrancyEffect?

Я также должен добавить, что я использую Xamarin.iOS.

+0

Я страдаю от этой проблемы, слишком – Pandara

ответ

1

У меня, похоже, есть решение моей собственной проблемы. Я закончил создание UIVisualEffectView с пустым UIView внутри и добавлением его за UIButton.

Этот фрагмент кода показывает, как стиль одной кнопки:

// Create effect view 
var effectView = new UIVisualEffectView(UIVibrancyEffect.CreateForNotificationCenter()); 
// This color looks best for me. You can play around with it to make it look better 
effectView.BackgroundColor = UIColor.FromRGBA(55, 55, 55, 100); 
// Position effectView 
effectView.Frame = myButton.Frame; 
// Add effectView and send it to back, behind actual button 
this.View.AddSubview(effectView); 
this.View.SendSubviewToBack (effectView); 

// Create UIView and add it to effectView's ContentView 
var view = new UIView(); 
view.BackgroundColor = UIColor.White; 
effectView.ContentView.AddSubview(view); 
view.Frame = new CGRect(0, 0, effectView.Frame.Width, effectView.Frame.Height); 

// Make sure your effect view has rounded corners 
effectView.Layer.MasksToBounds = true; 
effectView.Layer.CornerRadius = 4.0f; 

И вот как это выглядит:

enter image description here

+0

Great! Большое спасибо за этот фрагмент. –