首页 > 解决方案 > 如何在 UIStackView 内更改 UIButton 背景颜色

问题描述

我正在尝试将预加载的 UIStackView 插入另一个 StackView。在预加载的 UIStackView 中,我有以编程方式添加的子视图。问题是当我添加按钮并设置它们的颜色时,它们会得到白色背景,根本没有圆角半径

我尝试使用“background = new UIColor(51,181,229,255)”和“background = UIColor.FromCGColor(51,181,229,255)”

结果相同..

        //TextFields
        UITextField oldPasswordTextField = new UITextField
        {
            Placeholder = "Old Password",
            BackgroundColor = UIColor.White,
            ClipsToBounds = true
        };

        UITextField newPasswordTextField = new UITextField
        {
            Placeholder = "New Password",
            BackgroundColor = UIColor.White,
            ClipsToBounds = true
        };

        UITextField repPasswordTextField = new UITextField
        {
            Placeholder = "Repeat New Password",
            BackgroundColor = UIColor.White,
            ClipsToBounds = true
        };

        //Buttons
        UIButton cancelButton = new UIButton();           
        cancelButton.SetTitle("Cancel", UIControlState.Normal);
        cancelButton.SetTitleColor(UIColor.White, UIControlState.Normal);
        cancelButton.BackgroundColor = UIColor.FromCGColor(new CoreGraphics.CGColor(51, 181, 229, 255));
        cancelButton.ClipsToBounds = true;

        UIButton submitButton = new UIButton();
        submitButton.SetTitle("Submit", UIControlState.Normal);
        submitButton.SetTitleColor(UIColor.White, UIControlState.Normal);
        //submitButton.BackgroundColor = new UIColor(51, 181, 229, 255);
        submitButton.ClipsToBounds = true;


        passwordChangeStackView.AddArrangedSubview(oldPasswordTextField);
        passwordChangeStackView.AddArrangedSubview(newPasswordTextField);
        passwordChangeStackView.AddArrangedSubview(repPasswordTextField);
        passwordChangeStackView.AddArrangedSubview(submitButton);
        passwordChangeStackView.AddArrangedSubview(cancelButton);
        passwordChangeStackView.AddArrangedSubview(activityIndicator);

MainStackView.InsertArrangedSubview(passwordChangeStackView, 2); //2 -> 在相关按钮之后

我需要按钮与我选择的颜色、白色文本和所有子视图都有圆角......但我无法让两者都工作。

标签: c#user-interfacexamarinxamarin.iosmono

解决方案


您可以使用background = new UIColor(51,181,229,255),但是您在此函数中的参数是错误的。

RGB 颜色值通过以下方式指定:rgb(red, green, blue)。

每个参数(红色、绿色和蓝色)将颜色的强度定义为 0 到 255 之间的整数。

例如, rgb(0, 0, 255) 被渲染为blue,因为 blue 参数设置为其最高值 (255) 而其他参数设置为 0。

让我们看一下定义:

  //UIColor constructor from red, green, blue and alpha components.
        //
        // Parameters:
        //   red:
        //     Red component, 0.0 to 1.0f.
        //
        //   green:
        //     Green component 0.0 to 1.0f.
        //
        //   blue:
        //     Blue component value 0.0 to 1.0f.
        //
        //   alpha:
        //     Alpha (transparency) value from 0.0 to 1.0f.
        //
        // Remarks:
        //     This can be used from a background thread.
        [BindingImpl(BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
        [Export("initWithRed:green:blue:alpha:")]
        public UIColor(nfloat red, nfloat green, nfloat blue, nfloat alpha);

所以在你的情况下,你可以使用:

submitButton.BackgroundColor = new UIColor(51/255.0f, 181/255.0f, 229/255.0f, 255/255.0f);


推荐阅读