Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在iPad上制作类似AppStore的按钮_Objective C_Interface Builder_Xamarin.ios_Ipad - Fatal编程技术网

Objective c 如何在iPad上制作类似AppStore的按钮

Objective c 如何在iPad上制作类似AppStore的按钮,objective-c,interface-builder,xamarin.ios,ipad,Objective C,Interface Builder,Xamarin.ios,Ipad,我似乎不知道该怎么做这门课 我想要的是一些不是圆形矩形按钮的按钮 例如,iPad应用商店具有搜索控件,该控件模仿从web选择框或Windows下拉列表中已知的下拉列表 我如何创建一个看起来更像uibarbuttonite而不是RoundRect UIButton的按钮,并且仍然能够将其放置在任何地方 我在MonoTouch中工作,但答案可以是任何形式的,如何通过界面生成器或objective-c或MonoTouch编程实现,甚至只是一个伪描述——我只是希望得到一个提示 希望有人能指引我正确的方

我似乎不知道该怎么做这门课

我想要的是一些不是圆形矩形按钮的按钮

例如,iPad应用商店具有搜索控件,该控件模仿从web选择框或Windows下拉列表中已知的下拉列表

我如何创建一个看起来更像uibarbuttonite而不是RoundRect UIButton的按钮,并且仍然能够将其放置在任何地方

我在MonoTouch中工作,但答案可以是任何形式的,如何通过界面生成器或objective-c或MonoTouch编程实现,甚至只是一个伪描述——我只是希望得到一个提示

希望有人能指引我正确的方向


/Anders

网站上有一些自定义控件,您可以根据自己的需要使用,例如复制应用商店的“立即购买”按钮。

只需创建一个自定义按钮即可。下面是一个使用
UIView
CALayer
的一些功能创建真正丑陋的自定义按钮的示例

var btn = UIButton.FromType(UIButtonType.Custom);
btn.Frame = new RectangleF(100, 100, 150, 30);
btn.SetTitle("Button", UIControlState.Normal);
// Custom backround image.
btn.SetBackgroundImage(UIImage.FromFile("./images/barbuttonbackground.png"), UIControlState.Normal);
// Custom border color.
btn.Layer.BorderColor = UIColor.Orange.CGColor;
// Custom border width.
btn.Layer.BorderWidth = 2.0f;
// Custom rounded corners (does not really work well together with the background image).
btn.Layer.CornerRadius = 10.0f;
// Transparency.
btn.Alpha = 0.6f;
window.AddSubview(btn);

根据你的需要调整它。如果你想让你的按钮看起来不一样,那就去吧。

这是我目前在MonoTouch中的示例。 由于我没有使用颜色,我已经注释掉了colorlayer的部分,但保留了它作为参考

public static UIButton GetNewButton(RectangleF frame)
    {
        var btn = UIButton.FromType(UIButtonType.Custom);
        btn.Frame = frame;
        btn.Layer.BorderWidth = 1.0f;
        btn.Layer.BorderColor = UIColor.FromRGB(200,200,200).CGColor;
        btn.Layer.CornerRadius = 4.0f;

        btn.SetTitleColor(UIColor.Black, UIControlState.Normal);

        btn.TitleLabel.TextAlignment = UITextAlignment.Right;
        btn.TitleLabel.BackgroundColor = UIColor.Clear;

        btn.Layer.NeedsDisplayOnBoundsChange = true;

        SetupLayers(btn);


        return btn;
    }

    private static void SetupLayers(UIButton btn){
        CAGradientLayer bevelLayer = new CAGradientLayer();
        bevelLayer.Frame = new RectangleF(new PointF(0,0), btn.Frame.Size);
        bevelLayer.Colors = new CGColor[]{UIColor.White.CGColor, UIColor.FromRGB(218,218,218).CGColor};
        bevelLayer.CornerRadius = 4.0f;
        bevelLayer.NeedsDisplayOnBoundsChange = true;

    /*  CALayer colorLayer = new CALayer();
        colorLayer.Frame = new RectangleF(0f,1f, btn.Frame.Width, btn.Frame.Height -2);
        colorLayer.BorderColor = UIColor.FromWhiteAlpha(0, 0.1f).CGColor;
        colorLayer.BackgroundColor = UIColor.FromRGBA(0.220f, 0.357f, 0.608f, 1).CGColor;
        colorLayer.BorderWidth = 1.0f;
        colorLayer.CornerRadius = 4.0f;
        colorLayer.NeedsDisplayOnBoundsChange = true;
    */  
        CAGradientLayer colorGradient = new CAGradientLayer();
        colorGradient.Frame = new RectangleF(0f,1f, btn.Frame.Width, btn.Frame.Height -2);
        colorGradient.Colors = new CGColor[]{UIColor.FromWhiteAlpha(1f, 0.1f).CGColor, UIColor.FromWhiteAlpha(0.2f, 0.1f).CGColor/*, null*/};
        colorGradient.Locations = new NSNumber[]{NSNumber.FromFloat(0.0f), NSNumber.FromFloat(1.0f)};
        colorGradient.CornerRadius = 4.0f;
        colorGradient.NeedsDisplayOnBoundsChange = true;

        btn.Layer.AddSublayer(bevelLayer);
    //  btn.Layer.AddSublayer(colorLayer);
        btn.Layer.AddSublayer(colorGradient);
        btn.BringSubviewToFront(btn.TitleLabel);

    }

好的,这里的总体思路是创建一个具有我想要的渐变和/或光泽光晕的背景图像,然后设置其余的属性。这看起来很有趣-我不是在寻找动画,而是在我的例子中更像popover/dropdown的功能。但我喜欢“完全没有图像”的方法。今天晚些时候我将对此进行研究。我将把这作为一个答案,因为这似乎完全符合我的目的。它以渐变等方式呈现按钮。我在写作时发布了我如何使用它的示例。我再一次被没有足够的重复所困扰。。我可以先发布我的代码作为“答案”8小时后发布。。。所以稍后我的MonoTouch实现将到达该站点。。。