ストーリーボード未使用で開発しています。
やっている事
下記コードを利用してnavigationItem.titleViewを表示できています。
これを表示しているビューAから別のビューBに遷移し、
そこでnavigationItem.titleViewのtextを変更します。
分からない事
変更後ビューAに戻ると、
titleLabelとsubtitleLabelのyの位置が同じ位置になっており、重なってしまいます。
原因を調べてもわからないため質問します。
よろしくお願いします。
func setTitle(title:String, subtitle:String) -> UIView { let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width:0, height:0)) titleLabel.backgroundColor = UIColor.clear titleLabel.textColor = UIColor.black titleLabel.font = UIFont.boldSystemFont(ofSize: 17) titleLabel.text = title titleLabel.sizeToFit() let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width:0, height:0)) subtitleLabel.backgroundColor = UIColor.clear subtitleLabel.textColor = UIColor.gray subtitleLabel.font = UIFont.systemFont(ofSize: 12) subtitleLabel.text = subtitle subtitleLabel.sizeToFit() let titleView = UIView(frame: CGRect(x:0, y:0, width:max(titleLabel.frame.size.width, subtitleLabel.frame.size.width), height:30)) titleView.addSubview(titleLabel) titleView.addSubview(subtitleLabel) let widthDiff = subtitleLabel.frame.size.width - titleLabel.frame.size.width if widthDiff > 0 { var frame = titleLabel.frame frame.origin.x = widthDiff / 2 titleLabel.frame = frame.integral } else { var frame = subtitleLabel.frame frame.origin.x = abs(widthDiff) / 2 titleLabel.frame = frame.integral } return titleView }
回答1件
あなたの回答
tips
プレビュー