I encountered a hurdle when trying to create loops in Garageband that will adjust to the tempo of the project. I was copying and pasting waveform sections of songs into GB and attempting to save them as loops but the "one shot" option was automatically selected. I had painstakingly matched the length of the loop to the end of the measure by
1. determinging the bpm of the original song using BPM Meter app on my iphone.
2. Creating a project with the bpm to match the original song.
3. Pasting the sample waveform that I wanted to loop
4. Looping the sample in the timeline by dragging the mouse it to the right when the circular arrow appears upon hovering over the end of the sample.
I use this to check to see if over time, the sample gets off beat. If it's off beat, I adjust my original selection, copy and paste the new selection into the timeline and repeat step 4 until I get a loop that corresponds to the beginning and end of, let's say, measure 234. That tells me that the sample is the right length. Usually this works fine and I can send it to the loop library as a "loop" instead of a "one shot." Before sending it to the loop library, I drag the right side back (un-loop it in the timeline) so that there is only one instance of the loop.
However, I found that it is possible for it to appear lined up in the GB timeline yet not be exportable as a "loop" with adjustable tempo. So I went back and adjusted the selection very slightly and pasted the new selection into GB and I found that I was able to save it as a "Loop" this time. Yet there was no discernable difference in the timeline with regard to the end of the loop lining up.
By the way, when I check the loop length, I am zoomed ALL THE WAY IN (to 1/64 of a measure) to the maximum level of granularity. However, this doesn't necessarily mean that what I see is what Garageband takes into account when measuring the loop.
To create a "loop" (that can adjust to the project tempo) you must be very exact in your cuts when making your sample, especially if you are cutting in another program, as I was. It may take several times to get it right. And even if it appears that it is right on, it may be too short or too long by less than the smallest increment available in the Garageband timeline, which is 1/64th of a measure. In other words, Garageband measures the loop by a finer ruler than it provides you in the interface. hmmm....That can explain the many questions regarding this topic, all of which were archived. That is why I created this new entry. I hope this helps you better than some of the previous answers on this topic.