UITableViewのviewForHeaderデリゲートを使用してカスタムヘッダービューを設定していますが、制約を設定していません。だから私のアプリケーションは、RTL言語もサポートする必要があります。私のコードは以下のように与えられる:UITableViewヘッダーの制約をプログラムでRTLとLTRをサポートするように設定するにはどうすればよいですか?
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: menuTableView.frame.size.width, height: 40))
let headerImage = UIImageView()
headerImage.frame = CGRect(x: 15, y: 15, width: 12, height: 12)
let headerLabel = UILabel()
headerLabel.frame = CGRect(x: headerImage.frame.origin.x + headerImage.frame.size.width + 20, y: 10, width:menuTableView.frame.size.width - 40, height: 20)
headerLabel.font = UIFont().robotoLight(withFontSize: 9)
headerLabel.textColor = CustomColor.menuGrey.color
let arrowImage = UIImageView()
arrowImage.isHidden = true
switch section {
case 1:
headerImage.image = UIImage(named: "home_icon")
headerLabel.text = "Home"
case 2:
headerImage.image = UIImage(named: "my_Id_icon")
headerLabel.text = "My ID"
case 3:
headerImage.image = UIImage(named: "my_interest_icon")
headerLabel.text = "My Account"
arrowImage.isHidden = false
if isFirstSectionHidden {
arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 3, height: 5)
arrowImage.image = UIImage(named: "side_arrow")
} else {
arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 5, height: 3)
arrowImage.image = UIImage(named: "down_arrow")
}
case 4:
headerImage.image = UIImage(named: "my_profile_icon")
headerLabel.text = "My Profile"
case 5:
headerImage.image = UIImage(named: "language_icon")
headerLabel.text = language
arrowImage.isHidden = false
if isSecondSectionHidden {
arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 3, height: 5)
arrowImage.image = UIImage(named: "side_arrow")
} else {
arrowImage.frame = CGRect(x: menuTableView.frame.size.width - 30, y: 15, width: 5, height: 3)
arrowImage.image = UIImage(named: "down_arrow")
}
case 6:
headerImage.image = UIImage(named: "notification_icon")
headerLabel.text = "Notifications"
case 7:
headerImage.image = UIImage(named: "about_us_icon")
headerLabel.text = "About Us"
case 8:
headerImage.image = UIImage(named: "faq_icon")
headerLabel.text = "FAQ"
case 9:
headerImage.image = UIImage(named: "contact_us_icon")
headerLabel.text = "Contact Us"
case 10:
headerImage.image = UIImage(named: "logout_icon")
headerLabel.text = "Logout"
default:
print("Something else")
}
let headerClick = UIButton(type: .custom)
headerClick.addTarget(self, action: #selector(self.headerAction), for: .touchUpInside)
headerClick.frame = CGRect(x: 0, y: 0, width: menuTableView.frame.size.width, height: 40)
headerClick.tag = section
headerClick.backgroundColor = UIColor.clear
headerView.addSubview(arrowImage)
headerView.addSubview(headerLabel)
headerView.addSubview(headerImage)
headerView.addSubview(headerClick)
return headerView
}
私はLTRとRTLの両方をサポートするために、プログラム的headerView、headerImageとheaderLabelのフレームと制約を設定できますか?
あなたは制約を使用している場合、あなたは「一流」と「後」制約(「左」と「右ではない)を使用してすることができ、装置があるときに、システムが自動的に調整されますRTLロケールで制約を設定するとフレームが明示的に設定されない – Paulw11
ええ、私は理解しています。上記のコード制約をプログラマチックに設定してください。 –