Я выяснил оба случая:
Для первого случая код анимации должен быть в viewDidAppear: и ключ заключается в том, чтобы заключить анимацию в транзакцию CAT.По какой-то причине без явной транзакции анимация, похоже, не занимает.
Второй пример очень похож, только то, что можно добавить CATransaction в делегате scrollview метод DidEndDecelerating:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x / self.scrollView.frame.size.width);
if(pageNumber == n)
{
[CATransaction begin];
...