Dynamicznie zmieniaj rozmiar etykiety w systemie iOS 7

W systemie iOS 6 używam:

CGSize labelSize = [self.text sizeWithFont:self.font constrainedToSize:size lineBreakMode:self.lineBreakMode];
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y , labelSize.width, self.frame.size.height);

Aby dynamicznie zmienić rozmiar UILabel. To nie działa w iOS 7, więc spróbowałem:

NSString *text = self.text;
CGFloat width = size.width;
UIFont *font = self.font;
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text
                                                                 attributes:@{ NSFontAttributeName: font }];

CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
                              options:NSStringDrawingUsesDeviceMetrics
                              context:nil];
CGSize size = rect.size;

self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y , size.width, self.frame.size.height);

To jest w kategorii na UILabel, ale to też nie działa ... Jakieś pomysły, z których powinienem korzystać?

questionAnswers(4)

yourAnswerToTheQuestion