Прокрутка UILabel, как шатер в подпредставлении
У меня есть UILabel в основном виде с текстом - "Очень очень длинный текст, Правильная ширина для этого будет 142, но ямы сократили его до 55.
По сути, я хочу реализовать прокрутку типа выделения, поэтому я написал код, чтобы добавить его в подпредставление и анимировать его в рамках этого представления.
КОД -
CGRect tempLblFrame = _lblLongText.frame;
UIView *lblView = [[UIView alloc] initWithFrame:tempLblFrame];
//Add label to UIView at 0,0 wrt to new UIView
tempLblFrame.origin.x = 0;
tempLblFrame.origin.y = 0;
[_lblLongText setFrame:tempLblFrame];
[_lblLongText removeFromSuperview];
[lblView addSubview:_lblLongText];
//SetClipToBounds so that if label moves out of bounds of its superview, it wont be displayed
[lblView setClipsToBounds:YES];
[lblView setBackgroundColor:[UIColor cyanColor]];
[self.view addSubview:lblView];
После этого я получаю этот вывод на симуляторе ->
Проблема возникает, когда я пробую анимацию с этим кодом -
tempLblFrame.origin.x = -_lblLongText.intrinsicContentSize.width;
[UIView animateWithDuration:2.0 delay:1.0 options:UIViewAnimationOptionCurveLinear
animations:^{
[_lblLongText setFrame:tempLblFrame];
}
completion:^(BOOL finished) {
NSLog(@"completed");
}];
Я надеялся, что увижу весь "Очень очень длинный текстСкорее всего "Очень..." свитки слева направо.
Чтобы решить это Я добавил одну строку кода -
//Add label to UIView at 0,0 wrt to new UIView
tempLblFrame.origin.x = 0;
tempLblFrame.origin.y = 0;
tempLblFrame.size.width = _lblLongText.intrinsicContentSize.width; //THIS LINE WAS ADDED
[_lblLongText setFrame:tempLblFrame];
[_lblLongText removeFromSuperview];
[lblView addSubview:_lblLongText];
Я думал, что полный текст будет установлен во вновь добавленном UIView, и он будет прокручиваться правильно. Но бег на симуляторе дал мне это -
И опять толькоОчень..." прокручивал слева направо.
Что я делаю неправильно? Пожалуйста помоги!!
РЕДАКТИРОВАТЬВидимо виновником была AutoLayout.
Понятия не имею почему, но однажды я снял галочкуИспользовать Autolayout " для просмотра в XIB все начало работать как положено. Установка tempLblFrame.origin.x = -_lblLongText.intrinsicContentSize.width; работал правильно, и свиток тоже.
Любое объяснение этому !!?