One definite problem is here:
ITPhotosHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader
withReuseIdentifier:@"header" forIndexPath:indexPath];
headerView = [[ITPhotosHeaderView alloc] initWithFrame:CGRectMake(0, 0, 320.0, 44.0)];
That code is nonsensical. In the first line, you dequeue the header view. In the second line, you wantonly throw away the header view you just dequeued and make a completely new one.