私は非常に早く慣れています。タイトルに記載されている作業に悩まされています。iOS Swift 3 - パネルタップ後のオーバーレイUIViewを削除します。
私の問題:
私はいくつかの簡単な詳細と申込ボタンからなる、プログラム的に製品ページを構築しています。オファーボタンをタップすると、他の詳細と一緒にビューにオーバーレイが表示されます。 [OK]をクリックすると、オーバーレイが消えます。
オーバーレイを除くすべてが消えない!
func hideOverlay(_ sender: UIButton) {
containerView.backgroundColor = UIColor.white
buttonView.backgroundColor = UIColor.white
for subview in overlayView.subviews {
subview.removeFromSuperview()
}
}
機能はoverlayView内のボタンをタップする上で呼び出された:私が試してみました何
。 showOverlay関数(作業中)を追加します。
func showOverlay(_ sender: UIButton) {
//Load overlay view
let overlayHeight : CGFloat = 500
let overlayWidth : CGFloat = 290
let overlayView = UIView(frame: CGRect(x: centreView(masterView: view.frame.width, subView: overlayWidth), y: 64 + centreView(masterView: (view.frame.height - 64), subView: overlayHeight), width: overlayWidth, height: overlayHeight))
overlayView.backgroundColor = UIColor.white
let overlayTitle = UILabel(frame: CGRect(x: 0, y: 0, width: overlayWidth, height: overlayHeight*1/5))
overlayTitle.text = "Offer Taken"
overlayTitle.font = UIFont.boldSystemFont(ofSize: 35)
overlayTitle.textAlignment = .center
overlayView.addSubview(overlayTitle)
let overlayButtonView = UIView(frame: CGRect(x: 0, y: 0 + (overlayHeight * 4/5), width: overlayWidth, height: overlayHeight * 1/5))
overlayButtonView.backgroundColor = UIColor.red
let buttonWidth : CGFloat = 100
let buttonHeight : CGFloat = 35
let overlayButton = UIButton(type: UIButtonType.system)
overlayButton.frame = CGRect(x: centreView(masterView: overlayWidth, subView: buttonWidth), y: overlayButtonView.frame.origin.y + centreView(masterView: overlayButtonView.frame.height, subView: buttonHeight), width: buttonWidth, height: buttonHeight)
overlayButton.backgroundColor = UIColor.blue
overlayButton.setTitle("OK",for: .normal)
overlayButton.setTitleColor(UIColor.white, for: .normal)
overlayButton.setTitle("Offer Taken", for: .highlighted)
overlayButton.setTitleColor(UIColor.white, for: .highlighted)
overlayButton.addTarget(self, action: #selector(self.hideOverlay(_:)), for: .touchUpInside)
overlayView.addSubview(overlayButtonView)
overlayView.addSubview(overlayButton)
containerView.backgroundColor = UIColor(colorLiteralRed: 0, green: 0, blue: 0, alpha: 0.5)
buttonView.backgroundColor = UIColor(colorLiteralRed: 0, green: 0, blue: 0, alpha: 0.5)
view.addSubview(overlayView)
}
私は、forループの後
overlayView.removeFromSuperview()
を試してみましたが、私はoverlayView.subviewsが正しく、私は期待して景色で満たされていないことを恐れています。
解決策にもう少し近いところにいても、時間を割いてくださっている方に感謝します。
削除コードが実際に実行されているかどうか確認しましたか? – Spads
overlayViewのサブビューはありませんでした。私はoverlayView.addSubview(blah)がいくつかのサブビューを生成すると思ったが、それはそうではなかった。タグ付きで以下の答えがあなたの時間のためにちょっとしたことをしました – ochhii