Cómo centrar contenido en un UIScrollView con contentOffset

Esto debería ser un problema MUY fácil, pero estoy teniendo problemas para get el resultado deseado. Tengo un desplazamiento horizontal de UIScrollView con un ancho de 320. El ancho de su contenido es 5000. Estoy tratando de centrar el contenido con:

// 'self' is the UIScrollView CGFloat newContentOffsetX = (self.width/2) + (self.contentSize.width/2); self.contentOffset = CGPointMake(newContentOffsetX, 0); 

No entiendo por qué esto no está centrando el contenido. ¿Puedes ver algo mal en los cálculos?

Creo que quieres:

 CGFloat newContentOffsetX = (self.contentSize.width/2) - (self.bounds.size.width/2); 

diagtwig:

 |------------------------self.contentSize.width------------------------| |-----self.width-----| |-------- offset --------| ^ center 

Use el siguiente código:

 CGFloat newContentOffsetX = (scrollView.contentSize.width - scrollView.frame.size.width) / 2; scrollView.contentOffset = CGPointMake(newContentOffsetX, 0);