2010-08-02 63 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

相关问题