recalc the position in layoutSubviews