У меня есть приложение с несколькими окнами, и я построил собственный контроллер PanelView для отображения панелей с ограниченной информацией о продукте, проблема в том, что должно быть 3 панели в портретном аспекте и 4 в горизонтальном.
Из-за глубины контроллеров представления (около 5) событие didRotateFromInterfaceOrientation:
не будет запускаться на дочернем viewcontroller, поэтому я использую NSNotificationCenter
на rootViewController, чтобы опубликовать сообщение и забрать его с помощью дочернего контроллера.
Я могу без проблем перемещать панели (UIScrollViews), но они перемещаются на место, когда я этого хочу, но они перемещаются мгновенно, что не плавно или аккуратно, я хочу, чтобы они скользили на свое новое место.
После некоторых поисков мне все еще не повезло узнать, как это сделать.
-(void) updatePanelLocations{
int buttonWidth = 230;
int buttonHeight = 335;
float frameWidth = mainPanel.frame.size.width;
int numberOfcolumns = frameWidth / buttonWidth;
float margin = (frameWidth - (numberOfcolumns * buttonWidth)) / (numberOfcolumns +1);
int currentRow = 0;
int currentColumn = 0;
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:kCATransitionReveal];
[animation setDuration:0.4];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
int i = 0;
for (UIView* curView in [mainPanel subviews]) {
//set an arbutrary tag field in generating the scrollviews so i can detect this
if (curView.tag != 9991) continue;
//newline detection
if (currentColumn == numberOfcolumns){
currentRow++;
currentColumn = 0;
}
[[curView layer] addAnimation:animation forKey:@"transitionViewAnimation"];
//XY Coordinates
int buttonX = (margin * (currentColumn + 1)) + (buttonWidth * currentColumn);
int buttonY = (margin * (currentRow + 1)) + (buttonHeight * currentRow);
//make the frame
[curView setFrame:CGRectMake(buttonX, buttonY, buttonWidth, buttonHeight)];
[curView setAutoresizingMask: UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin];
//put the button on the target uiscrollview
[[curView layer] removeAnimationForKey:@"transitionViewAnimation"];
//next column
currentColumn++;
i++;
}
animation = nil;
}
Как можно оживить это движение для скольжения от а к б ??
Или, что еще лучше, если я все понял неправильно, укажи мне правильное направление:)
Приветствия