2015-01-07 86 views
1

我有一個應用程序,我有一個側面菜單。在側面菜單中,按鈕的其餘部分顯示正常,但兩個按鈕拉伸很奇怪。附件截圖爲Screenshot爲什麼按鈕背景圖像會變形?

這是我如何設置按鈕圖像。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *simpleTableIdentifier = @"SimpleTableItem"; 

    RearViewTableViewCell *cell = [self.tableViewSideMenu dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
    if(cell == nil) 
    { 

     NSArray *cellView = [[NSBundle mainBundle] loadNibNamed:@"RearViewTableViewCell" owner:nil options:nil]; 
     cell = (RearViewTableViewCell *)[cellView objectAtIndex:0]; 
     cell.btnItemSelector.tag = indexPath.row; 
     [cell.btnItemSelector setBackgroundImage:[UIImage imageNamed:[buttonUnselect objectAtIndex:indexPath.row]] forState:UIControlStateNormal]; 
     [cell.btnItemSelector setBackgroundImage:[UIImage imageNamed:[buttonSelect objectAtIndex:indexPath.row]] forState:UIControlStateHighlighted]; 
     [cell.btnItemSelector addTarget:self action:@selector(btnMenuItemTapped:) forControlEvents:UIControlEventTouchUpInside]; 
     cell.selectionStyle =UITableViewCellSelectionStyleNone; 

    } 
    return cell; 

} 

我是新的自適應佈局。它是否導致問題?在iphone 5s上運行良好,但在iphone 6上它描繪了這種行爲。我只向tableview添加了一個約束(寬度)。我在這裏使用的uitableviewcell(自定義)具有領先空間,垂直空間,中心對齊等的所有常規約束。任何想法?

更新:我設置背景色爲紅色,它原來的問題,這兩個按鈕被調整到更小的&可能較寬的視野。爲什麼會發生? update

+0

是否所有正在伸展的行都有文字和圖像?我的意思是設置你有圖像和文字。如果它只有圖像,則某些約束問題可能會導致問題。只是隨機的想法:) –

+0

圖像之間的大小(寬度x高度)差異是什麼?如果我不得不猜測,我會說這兩張圖片的寬度不如其他圖片寬。 backgroundImages應該伸展,它們是按鈕的背景。 –

+0

這只是圖像。沒有文字。按鈕的其餘部分使用相同的約束條件設置得很好 – NSNoob

回答

1

我會建議你,使用button.image而不是button.backgroundImage。它看起來像將背景圖像設置爲UIButton無法處理圖像的contentMode,因爲它始終將UIImage拉伸至與UIButton相同的尺寸。

如果添加UIImage剛上propertyimage可以通過手動或Interface Builder內改變contentEdgeInsets改變UIButton內的圖像的位置。

以防萬一你想爲你的UIButtonUIImage以及一個NSString,我想創建一個自己的類UIButton型與UILabelUIImage和佈局他們Interface Builder內。

+1

中描述的設置約束。是的,我想出了自己。不知道爲什麼背景圖片沒有工作,但setImage確實沒有工作。 – NSNoob

1

按照"UIKit User Interface Catalog", "Buttons" chapter, "Images" section

背景(currentBackgroundImage)字段允許用戶指定的圖像顯示後面按鈕內容並填充按鈕的整個幀。如果您指定的圖片太小,則會延伸以填充該按鈕。如果它太大,它會被裁剪。

因此,您需要將所有背景圖像的大小設置爲等於按鈕的大小。

更新或者確保您的約束條件已配置爲使按鈕大小正確。

+0

您可以爲「RearViewTableViewCell」的框架和圖像大小添加日誌記錄嗎? –

+0

您能否爲單元格按鈕提供約束條件? –

+0

這裏可能有些愚蠢的東西。我不太明白自動佈局,我只是快速移動,使應用程序在iPhone5s上運行 – NSNoob

0

好吧夥計我不太清楚爲什麼這解決了問題,但它確實如此。

1)我用setImage而不是setBackgroundImage。

2)我從圖像名稱中刪除了後綴.png。

3)我清理了項目並重置了模擬器。

4)它工作。

這可能是緩存仍然有以前的圖像只包含?和我的符號,使按鈕的大小根據圖像的大小,但我不能確定。如果其他人可以發佈更好的解釋,我會將它標記爲答案