下記のテキストを持つ中央のボタンは私がUIButton
のアイコン下の中央のテキストのためにこのクラスを使用しています:それは正常に動作していますStackView - 画像
@IBDesignable
class TopIconButton: UIButton {
override func layoutSubviews() {
super.layoutSubviews()
let kTextTopPadding:CGFloat = 3.0;
var titleLabelFrame = self.titleLabel!.frame;
let labelSize = titleLabel!.sizeThatFits(CGSize(width: self.contentRect(forBounds: self.bounds).width, height: CGFloat.greatestFiniteMagnitude))
var imageFrame = self.imageView!.frame;
let fitBoxSize = CGSize(width: max(imageFrame.size.width, labelSize.width), height: labelSize.height + kTextTopPadding + imageFrame.size.height)
let fitBoxRect = self.bounds.insetBy(dx: (self.bounds.size.width - fitBoxSize.width)/2, dy: (self.bounds.size.height - fitBoxSize.height)/2)
imageFrame.origin.y = fitBoxRect.origin.y
imageFrame.origin.x = fitBoxRect.midX - (imageFrame.size.width/2)
self.imageView!.frame = imageFrame;
// Adjust the label size to fit the text, and move it below the image
titleLabelFrame.size.width = labelSize.width
titleLabelFrame.size.height = labelSize.height
titleLabelFrame.origin.x = (self.frame.size.width/2) - (labelSize.width/2)
titleLabelFrame.origin.y = fitBoxRect.origin.y + imageFrame.size.height + kTextTopPadding
self.titleLabel!.frame = titleLabelFrame
self.titleLabel!.textAlignment = .center
}
}
。私の問題は、UIStackView
で使用を開始したときです。 UITabBar
と似たようなものを作成しているので、5つのボタンが隣にあります。私は真ん中のボタンを画面の真ん中に置いておきたいですが、それはいつも数ピクセルです。私はUIStackView
の制約をチェックしても問題ありません。私はすべてのボタンexect中1を削除し、それは正確に真ん中にあります。 UIStackView
(塗りつぶし、中央揃え、等しく塗りつぶしなど)のオプションを試しました。何も役立ちません。誰にも分かりますか?各ボタンには異なるアイコンがあり(サイズが異なる)、テキストも異なっています(フリー、プレミアムなど - 時にはアイコンが小さくなることもあります)。
私StackViewの例(真ん中です赤い線が表示されます):