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: