2017-10-16 3 views
0

프로그래밍 방식으로 제약 조건을 도울 수 있는지 궁금합니다. 내가 원하는 것은 :버튼 겹침을 방지하기 위해 프로그래밍 방식으로 제약 조건을 추가하십시오. SWIFT 4

나는 루프 안에 버튼을 만들고 버튼은 서로 옆에 수평으로 정렬되어있다. 일부 단추는 너비가 다르기 때문에 단추가 다른 단추와 겹칠 수 있습니다. 중첩을 방지하고 그 사이에 공백을 추가하기 위해 제약 조건을 사용할 수 있습니까?

사전

에서

덕분 코드 :

 for (j, _) in buttonInfo.enumerated(){ 
     let button: UIButton = buttonArray[j] 
     let stackView = UIStackView(); 

     stackView.spacing = 30; 


     button.tag = Int((buttonInfo[j]?.pID)!)! 
     button.setTitle(buttonInfo[j]?.title, for: .normal) 
     button.addTarget(self, action: #selector(PalletViewController.productCall), for: .touchUpInside) 

     let stock = Int(buttonInfo[j]!.stock) 

     if(stock! == 0 || stock! < 0){ 
      button.isHidden = true; 
     } 


     let views = ["view": view, "button": button] as [String : Any] 





     let spacing = NSLayoutConstraint.constraints(withVisualFormat: "H:|-(10)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views); 

     view.addConstraints(spacing); 


    } 
+1

당신은, 당신이이 버튼을 추가 할 수 있습니다 루프에서 제약 조건을 추가하지 마십시오된다 [UIStackView] (https://developer.apple.com/documentation/uikit/uistackview) – Wez

+1

제안을 살펴한다 사전을 반복하면서 루프가 끝나면이 [NSLayoutConstraint constraintsWithVisualFormat : @ "H : | - [버튼] - (5) - [버튼] - (5) - [버튼] 옵션 : 0 metrics : nil views : nil];'버튼의 부모보기로 마침내이 버튼은 공백을 얻습니다. "5"또는 원하는 것 –

+0

@VictorJohn 안녕하세요,이 코드를 사용할 때 다음과 같은 오류가 발생합니다. 'let views = [ "view":보기]; NSLayoutConstraint.constraints (withVisualFormat : "H : | - [버튼] - (5) - [버튼] - (5) - [버튼] - |"옵션 : NSLayoutFormatOptions (rawValue : 0), 메트릭 : 보기 :보기)''이유 : 제약 형식을 구문 분석 할 수 없습니다 : 빈 문자열입니다. ' – LifeOS

답변

관련 문제