This used to be a pretty simple, straight forward process, but Apple has seriously changed it. Even third party apps on your iPhone can't do it anymore as iTunes seems to have completely done away with custom tones for the most part. If you've found a way to do it, that's great, but I'm going to show you another way and this method might not even require any other device like a computer or non-Apple app. All you technically need here today is your iPhone and Apple's GarageBand app for your iPhone.
You'll need to first make sure that the sound you want as a ringtone is on your iPhone as a song that can be played within the official, default Music app. Even if it's not a song, for instance if it comes from a TV show or movie, you'll still need it to be playable as if it were a song in your Music app on your iPhone. You can use a program such as Audacity to convert the sound to a song to be played on your iPhone and then transfer that to iTunes. There are tutorials around the web to show you how to do this.
If the song is not on your iPhone yet, you'll likely need a computer with iTunes, unfortunately. If it is a song, it might be available in Apple's iTunes Store on your iPhone and you won't need a computer. Definitely consider paying for the song here to support your favorite artist and ease the process by having it available immediately and not having to use a computer.
If you have Apple Music or iTunes Match (if you do not subscribe to either service, skip to the next paragraph), you can upload the song into iTunes on the computer and it will be automatically transferred to your iPhone in a few minutes. (If it doesn't automatically sync to your iPhone, click "File" in the upper iTunes menu bar (works on both Windows and macOS), then hover over "Library", then select "Update iCloud Music Library"; the status of when it's complete is located in the upper right hand corner of the iTunes window). If you have Apple Music or iTunes Match, you cannot drag and drop the song onto your iPhone when it is connected to the computer over USB or WiFi. The song must be synced over the internet from iTunes to get it onto your iPhone. Once it is available on your iPhone, download the song to your iPhone by selecting the cloud with an arrow icon. The song must be downloaded to your iPhone to do this. You can safely delete the song from being downloaded to your iPhone once this process is done.
If you do not subscribe to either of those services, you can drag and drop the song you want into iTunes and then drag and drop that song from your computer's iTunes music library into your iPhone that is listed on the left hand side of the iTunes window.
Next step is to open GarageBand on your iPhone.
Select "TRACKS" and then select any instrument.
In the upper left hand corner, there should be an arrow pointed down, beside that an icon with 3 boxes, and beside that an icon with 3 broken lines on top of each other. Press this icon.
In the upper right hand corner, select the circular icon next to the wrench.
Select "Music" of the upper options.
Find the song that you want to make a ringtone of.
Hold the song and move it slightly while still holding it. It should go back to the previous screen with the black background. Position the song as close to the left as you possibly can.
Trim the song to the part you want to make into a ringtone. You can do this by tapping the blue line and then tapping "Split".
Delete all the excess parts of the song that you do not want to be part of the ringtone.
Note: Don't worry; modifying the song here in GarageBand does not affect the original song that is downloaded to your iPhone. This is treated as a new song on its own.
Select the downward arrow in the upper left hand corner and then select "My Songs".
Press and hold down on the song that you just created. Let go once the icon pops out a little. A menu should appear above it with the following options "Copy, Duplicate, Rename, Move, Delete, Share..." Select "Share".
You may need to adjust the length of the song if it is over 30 seconds. If this is the case, go back to the song and trim the song to the part where you'd like to have a ringtone made and make it 30 seconds or under. Otherwise, if you click "Continue", GarageBand will create a ringtone of the first 30 seconds of the song.
Next should be a screen that says at the top "Export Ringtone".
Name your ringtone by tapping the bottom of "NAME OF THE RINGTONE". It is a good idea to name the ringtone so that you can easily remember which ringtone is which when deciding which ringtone to use.
Once done naming the ringtone, press "Export".
You should now have a window that pops up saying "Ringtone Export Successful". You can now immediately set the ringtone here if you wish by selecting "Use sound as..." and then choosing whether you'd like it to be your text or call ringtone.
If you would like to do it at a later time or have made a mistake, you can manually change the ringtone by going into your Settings app and then selecting "Sounds and Haptics". In here, you can manually select a ringtone you'd like to use.
How to Delete Custom Ringtones
If you've made a mistake or no longer want a ringtone you created, go back into GarageBand and long press on one of the song projects there.
Select "Share". Then select "Ringtone".
Select "Your Ringtones".
A new screen should appear showing you the custom ringtones you've made in GarageBand. In the upper right hand corner, select "Edit".
On the ringtone you wish to delete, select the red circle beside the ringtone and then select "Delete" to delete the ringtone.
Now you should be able to create and delete custom ringtones for yourself. Enjoy!
Please let me know in the comments below if this has helped you or if this process is not working for you.