淳熙九年（1182年），担任秘书丞。淳熙十年（1183年），为着作郎。淳熙十二年（1185年），为将作少监。淳熙十三年（1186年），为将作监。淳熙十五年（1188年），为国子司业，转任国子祭酒。官至兵部侍郎。宋光宗即位，绍熙元年（1190年）拜右谏议大夫兼侍讲，进御史中丞。本因周必大厚待，担任学官，因为二年不升官，留正上奏才得以升官，于是弹劾罢免周必大。母亲去世，服丧期应当辞官，顾虑再三，公论纷纷，于是才去职守丧。服丧终制，担任焕章阁学士，出知泉州、明州。宋宁宗即位，庆元元年（1195年），再为御史中