recompute subview frames on setFrame