작성
·
193
0
class ViewController: UIViewController {
@IBOutlet weak var graph1Height: NSLayoutConstraint!@IBOutlet weak var graph2Height: NSLayoutConstraint!
@IBOutlet weak var graph3Height: NSLayoutConstraint!
@IBOutlet weak var graph4Height: NSLayoutConstraint!
@IBOutlet weak var graph5Height: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
graph1Height = graph1Height.changeMultiplier(value: 0.9 as! CGFont) <- Thread 오류
graph2Height = graph2Height.changeMultiplier(value: 0.8 as! CGFont)
graph3Height = graph3Height.changeMultiplier(value: 0.7 as! CGFont)
graph4Height = graph4Height.changeMultiplier(value: 0.8 as! CGFont)
graph5Height = graph5Height.changeMultiplier(value: 0.5 as! CGFont)
}
}
extension NSLayoutConstraint {
func changeMultiplier(value: CGFont) -> NSLayoutConstraint {
NSLayoutConstraint.deactivate([self]) let newConstraint = NSLayoutConstraint.init(item: self.firstItem!, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem, attribute: self.secondAttribute, multiplier: value as! CGFloat, constant: self.constant)
newConstraint.priority = self.priority
newConstraint.shouldBeArchived = self.shouldBeArchived
newConstraint.identifier = self.identifier
NSLayoutConstraint.activate([newConstraint])
return newConstraint
}
}
답변 3
0
0
0
안녕하세요
changeMultiplier 안에
DispatchQueue.main.async {
...
...
}
이렇게 main queue로 감싸고 실행해 보시면 스레드 문제는 해결될 겁니다.