The 25-year-old, who is joining for the start of the 2017 season, has scored 3,917 first-class runs at an average of 39.17, including seven centuries.
Head coach Pierre de Bruyn was "delighted". He said: "Colin is a quality top-order batsman who can also bowl some useful off-spin.
"He will offer us a good option in all three formats of the game."
Leicestershire have signed former South Africa Under-19 batsman Colin Ackermann on a two-year contract.