调整可伸缩图像的大小以匹配UILabel sizeToFit

时间:2010-08-02 07:30:55

标签: iphone cocoa-touch uiimageview

我正在尝试创建一个带有图像的标签。图像是带圆角的自定义矩形。

我读到了stretchchableImageWithLeftCapWidth:确保角落不会缩放,并且大小为ToTit以放大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];

我错过了什么?如何确保文本和图像在工作时保持居中?

谢谢!

1 个答案:

答案 0 :(得分: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属性。