UIButtonの中にタイトルとして、UILabelがあります。
このラベルを複数行で表示する時に、縦位置を中央寄せにしたいことがありました。
align(横中央) はあるけど、verticalAlign(縦中央) の設定がなさそうだったので、ラベルのマージン設定を使うことにしました。
UIButtonの高さと UILabelの高さの差からマージンを求めました。
let margin = (btn.frame.size.height - (btn.titleLabel?.frame.size.height)!) / 2
btn.titleEdgeInsets = UIEdgeInsetsMake(margin, [左マージン], margin, [右マージン])
これはUIButtonの高さを固定したパターンで使えます。