2011-11-21 53 views
1

我們在這裏有一個非常定製的UITableViewCell。因此,它基本上是這樣的:保持UITableViewCell的背景視圖忽略單元格邊界

+----------------+ 
+ Image view + 
+ (230px height) + 
+----------------+ 
+ Content  + 
+ Content  + 
+ Overall 340px + 
+----------------+ 

我想要做的是:一個背景圖片添加到開始,在此圖像結束,也結束了小區的情況下表格單元結束(無背景重複或任何東西)。

所以這是我做過什麼:

// Custom UITableViewCell class, this is part of a method that gets called 
    // in an overriden -layoutSubviews 
    UIImage *watermarkImage = [UIImage imageNamed:@"myBackground.png"]; 

    int watermarkWidth = watermarkImage.size.width; 
    int watermarkHeight = watermarkImage.size.height; 

    int watermarkX = screenWidth - watermarkWidth; 
    int watermarkY = imageView.frame.size.height + 10; 

    CGRect watermarkFrame = CGRectMake(watermarkX, watermarkY, watermarkWidth, watermarkHeight); 

    UIImageView *watermarkImageView = [[UIImageView alloc] initWithFrame:watermarkFrame]; 
    [watermarkImageView setImage:watermarkImage]; 

    [self setBackgroundView:watermarkImageView]; 

這工作得很好,除了一個事實,即圖像比CGRect更大,因此比細胞本身更大。這會導致backgroundView與下面的單元格重疊,這看起來相當醜陋。

我能做些什麼來使backgroundView尊重單元格邊界?將clipsToBounds設置爲YES不起作用。

+2

設置幀?在'self'(TableViewCell)或'watermarkImageView'上? – thomas

+0

我在'self.backgroundView'和'watermarkImageView'上試過了。如果它只在「自己」設置爲YES時才起作用? –

+0

我會在'self'上啓用裁剪,因爲子視圖'backgroundView'太大。另外:我會使用'[[UImageView alloc] initWithImage]'並在設置'frame'之後(不要設置frame,因爲cell可能也設置了frame) – thomas

回答

0

就像我在評論中發佈的:我會在self上啓用裁剪,因爲子視圖backgroundView太大。

另外:我會用

UIImageView *imgView = [[UImageView alloc] initWithImage:] 
imgView.frame = CGRectMake(...) 

也嘗試BOT設定框架,因爲也許在Cell也自動的在其上查看您已設置`clipsToBounds`的backgroundView