When you don't want somebody you're calling to know the real phone number associated with your iPhone, whether it's for privacy reasons, to avoid being called back, or to prevent being ignored, there are multiple things you can do to block it on their caller ID.
Some of the below options have been around since before cell phones were even invented and still work on mobile networks. These are free options that anyone can use to block their phone number when making outgoing calls. However, there are some paid services you can take advantage of also if your intent is to mask your phone number instead of just making it "unknown" or "private."
Either way you go, your recipient is less likely to pick up your phone call if it's unlisted or a number they don't recognize, but you can always still leave a voicemail or try back later when they have their guard down. However, these are your safest options if you're worried about someone abusing your real phone number, either by harassment or by impersonating you in a hack.
Thanks to the FCC, who has mandated that all US carriers give customers the ability to block their identifying information from appearing on caller ID screens, all you have to do is enter one simple code into your phone's dialer before typing the actual phone number you're calling.
To do it, just enter *67 before, enter the phone number with area code, then hit the call button. If that doesn't work for you, sometimes #31# before the ten-digit number will do the trick since some carriers like T-Mobile use that to hide your number and name when both would show. However, in testing, using #31# on other carriers will just make a normal call, so test it out beforehand to make sure which works for your region and carrier.
If successful, all they will see on their end once the call goes through is "unknown," "private," "restricted," "anonymous," or a similar indicator. It's that easy, and you can even do this from some VoIP providers such as Google Voice.
However, depending on who you are calling, your call might not be connected. For instance, I've found that calling a phone with FreedomPop VoIP won't go through with *67 before the number. Your recipients may also subscribe to a premium service from their carrier that rejects all anonymous calls.
Also, note that you cannot use *67 when calling 911, toll-free numbers (starting with 800, 888, etc.), or premium-rate numbers (starting with 900). And this should go without saying, but don't use *67 to make threatening calls, because your right to anonymity ends there. Law enforcement can always request your number, and there's current push to make this process instantaneous in the future.
The downside with the above per-call blocking method is that you have to actually enter *67 as well as the ten-digit phone number you're calling. You can't dial *67 then choose someone from your list of contacts.
However, you can go to your "Contacts" list, select a contact, hit "Edit," insert the *67 (or #31# if that works for you) in front of their phone number, then hit "Done" to save. Do this with each and every contact you'd rather call anonymously, then call them using the "Contacts" list or the "Favorites" tab like you normally would.
If for some reason you don't want your phone number to appear on caller ID for anyone, you can block it for everyone in one shot. Depending on what carrier you have, you might be able to block your caller ID number for everyone right from your Settings menu. For instance, on AT&T and T-Mobile, you can go to Settings –> Phone –> Show My Caller ID, then toggle the option off.
For other carriers, you'll have to do this from your carrier's website or from their mobile app. For example, in the My Verizon app, you can select the menu icon in the top left, tap "Devices," then select "Manage" next to the device you want. Next, tap controls, enter your password or use Touch ID or Face ID, then tap "Adjust service blocks." Now all that's left is to toggle on "Caller ID Blocking."
A similar process can probably be accomplished using the My Sprint Mobile, myAT&T, My T-Mobile, myCricket, and My US Cellular Account, or whatever app your mobile carrier provides to manage your account services and information.
Now, if you do end up enabling this for all of your outgoing calls but want to disable it for one phone number that you're trying to call, either because you want them to see your phone number or because they are blocking anonymous calls, you can use dialer code *82, just like *67 above, in front of the 10-digit phone number. You can also choose to unblock your caller ID for specific contacts using Option 2 above, only instead of putting *67 in front of the number, save it with *82 instead.
If you use T-Mobile and the #31# worked for blocking your number and name for scenarios when both would show, then use *31# to unblock your number and name for individual phone calls or contacts, in this case.
As far as making your phone number not show up at all, the first three options above are your best bet. However, if you don't mind a phone number showing up but just don't want it to be the primary number for your iPhone, then there are third-party apps you can turn to.
Apps like Hushed and Burner make it easy to set up a second phone number, as well as burn it and get a new one quickly. However, they do charge money for their services, and the more you burn your number the more you're going to fork out. These apps are handy when you actually want someone to call you back during a limited timeframe, like when buying or selling on Craigslist.
A cheaper solution is to just use Google Voice. You won't be able to "burn" your Google Voice number without forking out some money, but at least you'll have one free secondary phone number you can use that you don't care about. Plus, incoming calls made to that number will redirect to your iPhone's main Phone app if you set it up right. You'll have to make calls from the Google Voice app, though.
This option is the shadiest out of the bunch, for obvious reasons. However, according to the FCC, spoofing your phone number with a different phone number is completely legal as long as you have no "intent to defraud, cause harm, or wrongly obtain anything of value." There's no easy way to do this without paying a service such as SpoofCard or SpoofTel, but if you have the money to waste, it's pretty easy.
Just sign up for an account, buy some credits, then dial the access number they give you whenever you want to make a spoofed phone call. When connected to that number, you would then enter the number that you really want to call, followed by the number that you want them to think you're calling from.
SpoofCard even has an iOS app, and new users can sign up for free introductory credits to try it out. Plus, not only can you disguise your real phone number with a different one, but you can also add background noises and change the sound of your voice for even more anonymity.
It's also worth noting that if you subscribe to features like Verizon's Share Name ID, you might want to unsubscribe if you don't want your name to also be attached to the phone number you're calling from. You can customize the name that appears, which is a good thing, but your phone number will still be visible. However, you can still use any of the options above to bypass the name/number sharing.
As for all of the blocking options above, there is no way to really know if you actually blocked your phone number successfully on your recipient's caller ID or not. You can test with other numbers you own, but that won't help you figure out what it looks like on other phones you don't own. But if you followed the steps right, your number should display as "unknown," "anonymous," or a similar term or as your secondary phone number, if you went that route.