Вы просто используете скругленный прямоугольник в качестве фона для метки? Если это так, вы можете изучить использование UIIMage stretchableImageWithLeftCapWidth: topCapHeight. При этом будет создано созданное вами изображение с повторяющимся участком слева и сверху с указанной вами шириной, которое автоматически растянется до вашей ширины.
Если нет, то наблюдение Key-Value - это путь. Просто чтобы охватить другой вариант - это похоже на «игру с огнем», как сказал программист Apple Эван Долл в одной из своих лекций в Стэнфорде, - вы можете использовать метод swizzling для замены реализации одного метода на другую.
void method_exchangeImplementations(Method m1, Method m2);
В этом случае вы хотите настроить реализацию setText, но вы также хотите вызвать оригинальный setText в UILabel. Таким образом, вы можете обмениваться setText с setTextAndUpdateSize, а внутри setTextAndUpdateSize делать то, что изначально делает setText, и добавлять немного больше. Если вы смущены или думаете, что это плохая идея, возможно, это так. Вы можете получить объект Method для передачи в method_exchangeImplementations, вызвав class_getInstanceMethod ([NSSTring class], @selector (methodName).
Как только ваш метод swizzle был вызван один раз, внутри вашего нового метода вы можете вызвать старую реализацию setText из новой, используя, да, setTextAndUpdateSize. Это сбивает с толку и не рекомендуется, но это работает. Хороший пример можно найти в коде примера разработчика.