필터링 할 수있는 항목 목록이있는 UITableView
이 있습니다.어떻게이 UIImageView를 완전히 숨길 수 있습니까?
는 X와 원형 후 필터를 클리어 클리어 버튼이며,이있는 UIView를 폐쇄 : 사용자가 필터를 선택하면, UIView의 0부터 40 픽셀로 변경 높이 NSLayoutConstraint를 사용하여 노출된다 0
다시 높이 제약 조건을 변경하여 문제는 때 UIView
닫히고, 즉 지우기 버튼이 완전히 사라지지 않는다는 것입니다 :
다음은 관련 코드입니다 :
class LiftLogViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {
let coreDataStack = CoreDataStack()
var liftEvents = [LiftEvent]()
//MARK: IB outlets
@IBOutlet var tableView: UITableView!
@IBOutlet weak var navItem: UINavigationItem!
@IBOutlet weak var filterViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearFilterButton: UIImageView!
@IBOutlet weak var selectedFilter: UILabel!
@IBOutlet weak var clearButtonHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var clearButtonView: UIImageView!
var isFilterViewOpen = false
override func viewDidLoad() {
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: #selector(self.dismissLog(_:)))
let filterImage = UIImage(named: "filter_icon")
let filterButton = UIBarButtonItem(image: filterImage, style: .Plain, target: self, action: #selector(self.actionFilter))
self.navItem.rightBarButtonItems = [doneButton, filterButton]
let buttonTap = UITapGestureRecognizer(target: self, action: #selector(self.clearFilter))
clearFilterButton.addGestureRecognizer(buttonTap)
filterViewHeightConstraint.constant = 0.0
clearButtonHeightConstraint.constant = 0.0
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
let filterPredicate: NSPredicate?
if let logFilter = UserDefaultsManager.sharedInstance.logFilter?.rawValue {
filterPredicate = NSPredicate(format: "lift.liftName = [c] %@", logFilter)
print("viewWillAppear thinks the filter is \(logFilter)")
} else {
filterPredicate = nil
}
reloadData(filterPredicate)
let currentFilter = getCurrentLogFilter()
if currentFilter != nil {
selectedFilter.text = "Filtered by \(currentFilter!)"
isFilterViewOpen = true
clearButtonView.hidden = isFilterViewOpen ? false : true
} else {
selectedFilter.text = nil
}
super.viewWillAppear(animated)
}
override func viewDidAppear(animated: Bool) {
filterViewHeightConstraint.constant = isFilterViewOpen ? 40.0 : 0.0
clearButtonHeightConstraint.constant = isFilterViewOpen ? 21.0 : 0.0
clearButtonView.hidden = isFilterViewOpen ? false : true
UIView.animateWithDuration(0.33, delay: 0, options: [.CurveEaseOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
func clearFilter() {
UserDefaultsManager.sharedInstance.logFilter = nil
isFilterViewOpen = !isFilterViewOpen
UIView.animateWithDuration(0.33, delay: 0, options: [.CurveEaseOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
selectedFilter.text = nil
reloadData()
}
당신은 내가 모두 true로 클리어 버튼을 보유하고있는 UIView에 .hidden 값을 설정 시도하고 I 0.0하지만도를 높이 제약 조건을 변경하려고했습니다 볼 수 있습니다 그것들은 완전히 사라져 버렸습니다.
잠시 동안 검색 한 결과가 없습니다. 아무도 내가하고있는 일에 무엇이 잘못되었는지 지적 할 수 있습니까? 감사.
'UIButton' 이미지를 닫을 때 nil로 설정하고 열거 나 UIView와 동일한 높이로 설정할 때 다시 설정합니다. –