ios xamarin uibutton ios8-today-widget uivibrancyeffect

ios - El título de UIButton no está visible cuando se aplica UIVibrancyEffect



xamarin ios8-today-widget (1)

Tengo problemas para aplicar UIVibrancyEffect a mis UIButtons en el widget iOS de hoy. Quiero que les guste el botón "Editar" predeterminado en la sección Hoy del centro de notificaciones:

Como puede ver en la captura de pantalla, el botón predeterminado es vibrante y se ve mucho mejor.

Intenté reemplazar la View del widget con UIVisualEffectView así:

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;

Y parece estar funcionando, pero los títulos de mis botones también se vuelven vibrantes (quiero que sigan siendo negros):

¿Hay alguna manera de evitar que los títulos de los botones se vuelvan vibrantes cuando se aplica UIVibrancyEffect?

También debería agregar que estoy usando Xamarin.iOS.


Parece que tengo una solución para mi propio problema. Terminé creando UIVisualEffectView con UIVisualEffectView en blanco dentro y añadiéndolo detrás de UIButton .

Este fragmento de código muestra cómo aplicar un estilo a un botón:

// 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;

Y así es como se ve: