You have two options (and here I describe the encryption process only, but decryption is similar):
Use a stream cipher (like AES-CTR)
You initialize the cipher with a 16 byte key and truly random 16 byte nonce, write the nonce, load the first piece, encrypt it, write the result, load a second piece and so on.
Note that you must initialize the cipher only once. The size of the piece can be arbitrary;
it does not even need to be the same each time.
Use a block cipher with a one pass chaining mode, for instance AES128-CBC
You initialize the cipher with the 16 byte key, generate a random 16 byte IV, write the IV, write the total length of the file, load the first piece, encrypt it together with the IV, write the result, load a second piece, encrypt using the last 16 bytes of the previous encrypted block as IV, write the result, and so on. The size of the piece must be a multiple of 16 bytes; again, it does not even need to be the same each time. You may need to pad the last block with zeroes.
In both cases
You must compute the cryptographic hash of the original unencrypted file (e.g. using SHA-256) and write it when the encryption is finished. That is pretty easy: you initialize the hash at the very beginning, and feed each block to it as soon as it is loaded (including nonce/IV and possibly the length field). At the decryption side, you do the same. Eventually, you must verify that the computed digest matches with the one that came with the encrypted file.
How can that be done on iOS? I am afraid I am not familiar with the platform, but CCCypt seems to fit the bill.
EDIT: nonce/IV and length are hashed too.