2010-08-02 71 views
0

我正在試圖創建一個帶有圖像背後的圖像的標籤。該圖像是一個帶圓角的自定義矩形。調整可伸縮圖像的大小以匹配UILabel sizeToFit

我讀了關於stretchableImageWithLeftCapWidth:以確保角落不會縮放,以及有關sizeToFit放大UILabel框架。

現在整個視圖:我在IB中有一個UIView,我在圖像上添加了一個ImageView,並在其上添加了一個UILabel。他們都居中(並應保持居中),

我調用一個函數,將更改UILabel的文本,並應對幀進行必要的更改。

這裏是我一直在努力做的事情:

myLabel.text = hint; 
    [myLabel sizeToFit]; 
    CGRect r = myLabel.frame; 

    UIImage* image = [[UIImage imageNamed:@"Bg.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5]; 
    [image retain]; 
    myImageView.frame = CGRectMake(r.origin.x - 5, r.origin.y - 5, r.size.width + 10, r.size.height + 10); 
    [myImageView initWithImage:image]; 
    [self setNeedsDisplay]; 

我缺少什麼?以及如何確保它在工作時文本和圖像保持居中?

謝謝!

+0

究竟是什麼問題? – 2010-08-02 07:57:47

+0

我寫的代碼不起作用... – 2010-08-02 08:22:09

回答

0

您可以使用center財產上的每個UIView

myImageView.center = CGPointMake(self.bounds.size.width/2,self.bounds.size.height/2); 

這將圍繞myImageView內部自我垂直和水平。使用相同的標籤。如果您需要ImageView的一個更大的框架那裏有更具可讀性功能CGRectInset()

myImageView.frame = CGRectInset(myLabel.frame, 10, 10); 

順便說一句:

  1. 你顯然泄漏圖像。似乎沒有理由保留它。
  2. 請勿在已經初始化的對象上使用初始值設定項(init WithImage :)。改爲使用setImage:image屬性。
+0

嗨,謝謝你的幫助和筆記。我已經做了更改,但Bg.png圖片比例尺仍然是錯誤的。至少現在它尺寸合適,但比例不成比例。也許我應該修復UIImageView本身的一些屬性? – 2010-08-02 08:51:45

+0

嗨 - 我已經玩了更多,現在看來工作。 我的猜測是,stretchableImageWithLeftCapWidth需要更多的像素。 – 2010-08-02 09:37:52