运行时有吸引力的 iOS UIButtons
Posted
技术标签:
【中文标题】运行时有吸引力的 iOS UIButtons【英文标题】:Attractive iOS UIButtons at runtime 【发布时间】:2011-04-07 08:22:53 【问题描述】:我一直在使用来自here 的 Glass Button Generator 在 ios 上生成看起来像 UIGlassButtons 但不使用 UIGlassButton 类的 PNG(因为它是私有的)。然后将这些设置为自定义 UIButton 实例的图像。效果非常好,看起来很棒。
但是,我现在需要在运行时动态设置按钮上的文本。上述方法行不通。我还需要至少在垂直维度上动态设置按钮的大小。
UIButton 看起来很丑很扁平。一定有某种方法可以在运行时生成有吸引力的按钮?
欢迎非单点触控专用解决方案,易于翻译。
提前干杯。
【问题讨论】:
【参考方案1】:我想编写自己的 GlassButton 有一段时间了,可以随意剪切并粘贴到您的代码中,我已将它作为 MonoTouch.Dialog 库的一部分:
https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Utilities/GlassButton.cs
你可以这样使用它:
var glossy = new GlassButton (new RectangleF (0, 0, 120, 50))
NormalColor = UIColor.Red,
HighlightedColor = UIColor.Black,
DisabledColor = UIColor.Black
;
glossy.Tapped += delegate
Console.WriteLine ("I have been tapped");
window.AddSubview (glossy);
【讨论】:
如果我们可以将此按钮映射到元素或反射api,那就太酷了。【参考方案2】:子类 UIButton 并添加一个 UILabel 作为子视图。这在直接的 C# 中比使用 Interface Builder 更容易。
公开它的文本属性,也许还有其他的,比如字体大小等。
这应该就是让它工作所需的全部内容。
【讨论】:
已经有这样的基础设施了,但这并不能解决UIButton默认丑陋的问题。 我认为使用预先创建的图像将是这里的最佳选择。 UIKit 不是 WPF。在 MonoTouch 中,您不会使用径向渐变笔刷等轻松生成漂亮的按钮。我建议在 Photoshop 等中创建一个按钮外观,或者让平面设计师参与进来。 如何在按钮中添加一个子视图以使左侧部分、右侧部分和中间部分具有 uiImaveView。比根据标签宽度调整中间图像宽度。这行得通吗?【参考方案3】:你可以不加任何东西就放按钮,然后,用文字画一个UILabel,用clearColor作为UILabel的背景,把UILabel放在按钮的正上方,看起来就像是按钮的一部分。
【讨论】:
以上是关于运行时有吸引力的 iOS UIButtons的主要内容,如果未能解决你的问题,请参考以下文章