【问题标题】:Attractive iOS UIButtons at runtime运行时有吸引力的 iOS UIButtons
【发布时间】:2011-04-07 08:22:53
【问题描述】:

我一直在使用来自here 的 Glass Button Generator 在 iOS 上生成看起来像 UIGlassButtons 但不使用 UIGlassButton 类的 PNG(因为它是私有的)。然后将这些设置为自定义 UIButton 实例的图像。效果非常好,看起来很棒。

但是,我现在需要在运行时动态设置按钮上的文本。上述方法行不通。我还需要至少在垂直维度上动态设置按钮的大小。

UIButton 看起来很丑很扁平。一定有某种方法可以在运行时生成有吸引力的按钮?

欢迎非单点触控专用解决方案,易于翻译。

提前干杯。

【问题讨论】:

    标签: ios uibutton xamarin.ios uiglassbutton


    【解决方案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放在按钮的正上方,看起来就像是按钮的一部分。

    【讨论】:

      最近更新 更多