2011-09-21 15 views
1

我似乎無法弄清楚如何做主題。如何在iPad上製作AppStore般的按鈕

我想要的是有一些不是圓形按鈕的按鈕。

iPad AppStore具有例如模仿從例如已知的下拉菜單的搜索控件網頁選擇框或從Windows下拉菜單。

enter image description here

如何創建一個按鈕,看起來更像是一個的UIBarButtonItem比ROUNDRECT的UIButton,並且仍然能夠任何地方嗎?

我在MonoTouch中工作,但答案可以在任何口味,如何通過接口生成器或在Objective-C或MonoTouch中編程實現,甚至只是一個僞描述 - 我只是希望得到一個提示。

希望有人在那裏可能會導致我在正確的方向...

/安德斯

回答

1

有在網絡的一些自定義控件,你可以用你的目的,例如MAConfirmButton它複製App Store的「立即購買」按鈕。

+0

這似乎很有趣 - 我實際上並沒有在尋找動畫,更多的彈出/下拉功能在我的情況。但我喜歡「完全沒有圖像」的方法。我會在今天晚些時候看看它。 – ankhansen

+0

我會將此標記爲答案,因爲這似乎符合我完美的目的。它呈現漸變等按鈕張貼我的例子,我如何使用它在寫作的時刻。 – ankhansen

+0

我再次遇到沒有足夠的代表..我可以先張貼我的代碼作爲「答案」發佈後8小時...所以有時候後來我的MonoTouch實現這將達到該網站... – ankhansen

2

只需創建一個自定義按鈕。以下是使用UIViewCALayer的某些功能創建真正難看的自定義按鈕的示例。

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); 

根據您的需要進行調整。如果你想讓你的按鈕看起來不同,繼續。

+0

好的,所以這裏的一般想法是創建一個具有我想要的漸變和/或光澤發光的背景圖像 - 然後設置其餘屬性。 – ankhansen

0

繼承人我的樣品如何在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); 

    }