The Citizens had been chasing the English winger as a replacement for Adam Johnson, who left to join Sunderland earlier this week.
They had two bids for the 23-year-old rejected before agreeing a fee with the Swans on Thursday.
Sinclair said on joining the Premier League champions: "I'm just glad everything is settled and that I'm now a City player."
"There were times when I thought it might not happen so I'm relieved that I'm here and I can't wait to get started.
"Playing alongside some of the best players in the world is exciting for me and when you see two Champions League fixtures against Real Madrid on the horizon, it brings it all home."
Sinclair played four times, scoring once, in Great Britain's Olympic football campaign this summer.