4

我在今天的 iOS 小部件中将 UIVibrancyEffect 应用到我的 UIButtons 时遇到问题。我希望他们喜欢通知中心“今日”部分中的默认“编辑”按钮:

今天小部件

正如您在屏幕截图中看到的那样,默认按钮充满活力并且看起来好多了。

我尝试用这样的替换小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;

它似乎正在工作,但我的按钮标题也变得充满活力(我希望它们保持黑色):

在此处输入图像描述

有没有办法在应用 UIVibrancyEffect 时防止按钮标题变得充满活力?

我还应该补充一点,我正在使用 Xamarin.iOS。

4

1 回答 1

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;

这就是它的外观:

在此处输入图像描述

于 2015-12-29T12:27:00.750 回答