2011-11-29 149 views
6

我正在爲iPad應用程序編程創建按鈕。當我看到按鈕時,它看起來像是一個陰影類型的東西。它是什麼,我如何擺脫它?我的按鈕上有一個陰影

shadow button

這裏是創建它的代碼:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.titleLabel.font = [UIFont fontWithName:@"Trebuchet MS" size:12]; 
[myButton setTitle:@"test" forState:UIControlStateNormal]; 
myButton.frame = CGRectMake(0, 0, self.leftScrollView.frame.size.width, 50); 

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gear12.png"]]; 

[myButton addSubview:myImageView]; 
[self.leftScrollView addSubview:myButton]; 

UPDATE:

好吧,我發現我只得到這種效果,當它在我的滾動視圖。如果我將它添加到視圖中,則無陰影效果。

頂部測試按鈕,該按鈕是視圖的子視圖。底部按鈕是scrollview的子視圖,它是視圖的子視圖(按鈕/視圖vs按鈕/滾動視圖/視圖)。

白色部分是視圖,灰色是滾動視圖/視圖。

shadow effect 2

更新2:

由robmayor指出,UIButtons總是有雙線的效果,只是沒有都明顯時,背景色爲白色。藍色是視圖,灰色是子視圖滾動視圖。

enter image description here

+0

這可能是有用的: http://stackoverflow.com/questions/18341319/how-to-get-rid-of-gap-around-round-rect-button –

回答

5

在iPad上,圓角矩形UIButton沿其底邊總是繪製一條白線。如果按鈕的超級視圖是白色的,則無法看到該白線,但它仍然存在。

您有幾種選擇:

  • 充分利用上海華白。這是最簡單的,但你可能不喜歡它的外觀。

  • 在您喜歡的圖像編輯器中製作一些圓角矩形圖像。將按鈕類型設置爲自定義,並將圓角矩形圖像設置爲按鈕的圖像。

  • 創建UIButton的子類並覆蓋其drawRect:方法。

  • 設置按鈕類型自定義和使用該按鈕的層特性(button.layer.backgroundColorbutton.layer.borderColorbutton.layer.borderWidthbutton.layer.cornerRadius),得到按鈕圓角的矩形的外觀。如果您想讓按鈕像普通按鈕一樣變藍,則必須在觸摸按鈕時更新button.layer.backgroundColor。 (其實正常的使用藍色漸變。)

+0

這個蘋果相當愚蠢。使添加一個簡單的按鈕更復雜,然後它需要。謝謝。 – Padin215

+0

看起來,一個圓角矩形按鈕實際上是繪製爲單個分組樣式的UITableViewCell,因此繼承了底部的白色邊框。這個白色邊框對於標準分組式樣表格背景上的底部單元格看起來很棒。但將按鈕設置爲相同的繪圖代碼對蘋果來說是一個糟糕的選擇。 – matt

-1

替換[UIButton buttonWithType:UIButtonTypeRoundedRect]有:

UIButton *myButton = [UIButton new]; 

或:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

您希望您的自定義按鈕。如果需要,您仍然可以使用圓角。

+1

爲什麼這會有所作爲嗎?圓形矩形按鈕通常不會像這樣兩次自己繪製。 OP更可能無意中在大致相同的地方繪製兩個按鈕。 – matt

+0

我現在只在我的代碼中添加單個按鈕。我用更新的信息更新了我的問題。第二個圖像,我只是在IB中拖動按鈕。 – Padin215

+0

@matt,圓形矩形按鈕絕對是這樣畫的。在IB中檢查它自己是微不足道的。 –

9

這個問題是老(6個月),但i'have找到了解決刪除/屏蔽的雙回線這樣不好的影響。

[yourButton.layer setBackgroundColor: [[UIColor blackColor]CGColor]]; 
[yourButton.layer setBorderWidth:1.0f]; 
[yourButton.layer setBorderColor:[[UIColor blackColor]CGColor]]; 
[yourButton.layer setShadowOpacity:0.1f]; 
[yourButton.layer setCornerRadius:10]; 

所選的UIColor取決於您的視圖的當前背景。

結果:enter image description here

+0

這會在按鈕中創建一個黑色邊框。更好地工作,但不能刪除該行。 – Rodrigo

+0

這是完美的! (雖然我不確定是否需要設置背景顏色或陰影不透明度。) – fumoboy007