Изменение размера растягиваемого изображения для соответствия размеру UILabelToFit - PullRequest
0 голосов
/ 02 августа 2010

Я пытаюсь создать ярлык с изображением позади него.изображение представляет собой пользовательский прямоугольник со скругленными углами.

Я читал о stretchableImageWithLeftCapWidth: чтобы углы не масштабировались, а sizeToFit увеличивал фрейм UILabel.

Теперьпросмотреть в целом: у меня есть UIView в IB, я добавил 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 голосов
/ 02 августа 2010

Вы можете использовать свойство 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...