【问题标题】:How to set the color of a UIButton inside (not background color)如何设置内部 UIButton 的颜色(不是背景颜色)
【发布时间】:2011-06-13 13:33:07
【问题描述】:

我正在调整一些视觉变化,并注意到当我尝试设置 UIButton 的背景颜色时,它只设置实际按钮外部的颜色(而不是按钮本身内部)

UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(6, 9, 50, 25);    
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor redColor]; 

是否存在允许我设置颜色的其他属性?

【问题讨论】:

    标签: uibutton background-color iphone


    【解决方案1】:

    如果您不想使用图像,并且希望它看起来与圆角矩形样式完全一样,请试试这个。只需在 UIButton 上放置一个 UIView,具有相同的框架和自动调整大小的掩码,将 alpha 设置为 0.3,并将背景设置为一种颜色。然后使用下面的 sn-p 将圆形边缘从彩色覆盖视图中剪掉。此外,取消选中 UIView 上 IB 中的“用户交互已启用”复选框,以允许触摸事件向下级联到下方的 UIButton。

    一个副作用是您的文本也会被着色。

    #import <QuartzCore/QuartzCore.h>
    
    colorizeOverlayView.layer.cornerRadius = 10.0f;
    colorizeOverlayView.layer.masksToBounds = YES;
    

    【讨论】:

    • 你也可以将layer.corderRadius改为按钮本身(使用UIButtonTypeCustom并设置backgroundColor属性
    【解决方案2】:

    对于 Xamarin

    var addNote = new UIButton(UIButtonType.Custom);
            //addNote.SetImage(new UIImage("Images/11-x.png"), UIControlState.Normal);
            addNote.SetTitle("Add Note", UIControlState.Normal);
            addNote.Frame = new RectangleF(0, 0, 130, 30);
            addNote.SetTitleColor(UIColor.Blue, UIControlState.Normal);
            addNote.BackgroundColor = UIColor.LightGray;
            addNote.Layer.CornerRadius = 10f;
            addNote.Layer.BorderColor = new MonoTouch.CoreGraphics.CGColor(0f, 100f, 0f);
            addNote.Layer.BorderWidth = 2f;
            addNote.TouchUpInside += delegate
            {
                AddNote();
            };
    

    【讨论】:

    • 我假设有很多宏...SetTitleColor(UIColor.Blue, UIControlState.Normal) 对我不起作用。
    【解决方案3】:

    我刚刚发现了一个完美的解决方案,但我不知道为什么。

    如果在 Interface Builder 中选择按钮,并打开“身份检查器”,则可以添加“用户定义的运行时属性”。如果你添加一个“self.fillColor”键,带有一种颜色,那么该颜色将用作按钮的填充颜色。

    我完全是偶然发现的。我有一个名为 ColoredButton 的 UIButton 自定义子类,我在其中绘制了圆角矩形并自己填充它。它使用了一个 fillColor 属性。我将我的一个 ColoredButton 对象改回 UIButton 来测试一些东西,并惊讶地发现它仍然充满了一种颜色。

    我不知道它为什么有效,但确实有效。

    【讨论】:

      【解决方案4】:

      使用setImage:forState:

      - (void)setImage:(UIImage *)image forState:(UIControlState)state
      

      另外,别忘了用[UIButton buttonWithType:UIButtonTypeCustom]创建你的按钮

      【讨论】:

      • 所以我必须使用这种方法的图像?我怎么能在这里得到一种颜色?
      • 是的,您需要一张图片。您可以在没有图像的情况下通过,但按钮将有方角。所以方形的核心,充满了颜色和标题。没有其他的。为此:将您的按钮创建为 UIButtonTypeCustom 并将其 backgroundColor 属性设置为您需要的任何颜色
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 2011-09-29
      • 2016-01-30
      • 2018-06-29
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多