I'm sorry but none of these suggestions here have ever worked for me. We're applying breathable paints on our face, essentially, so without these things drying to a brittle finish, makeup is going to transfer when rubbed against cloth. Apparently Dior has a transfer-free foundation but I haven't tried it myself personally. I just never allow my face to be rubbed against anything if I can help it.
You can try a setting spray like Make Up For Ever 'Mist and Fix'. It's a great product, makes your makeup stay put all day, and I haven't had my makeup rub off on my clothes (or anyone ele's) since I started using it.