2017-10-26 5 views
0

아래 텍스트 중심 버튼 내가 UIButton의 아이콘 아래 중앙 텍스트이 클래스를 사용하고 있습니다 : 그것은 잘 작동하고StackView - 이미지

@IBDesignable 
class TopIconButton: UIButton { 

    override func layoutSubviews() { 
     super.layoutSubviews() 

     let kTextTopPadding:CGFloat = 3.0; 

     var titleLabelFrame = self.titleLabel!.frame; 


     let labelSize = titleLabel!.sizeThatFits(CGSize(width: self.contentRect(forBounds: self.bounds).width, height: CGFloat.greatestFiniteMagnitude)) 

     var imageFrame = self.imageView!.frame; 

     let fitBoxSize = CGSize(width: max(imageFrame.size.width, labelSize.width), height: labelSize.height + kTextTopPadding + imageFrame.size.height) 

     let fitBoxRect = self.bounds.insetBy(dx: (self.bounds.size.width - fitBoxSize.width)/2, dy: (self.bounds.size.height - fitBoxSize.height)/2) 

     imageFrame.origin.y = fitBoxRect.origin.y 
     imageFrame.origin.x = fitBoxRect.midX - (imageFrame.size.width/2) 
     self.imageView!.frame = imageFrame; 

     // Adjust the label size to fit the text, and move it below the image 

     titleLabelFrame.size.width = labelSize.width 
     titleLabelFrame.size.height = labelSize.height 
     titleLabelFrame.origin.x = (self.frame.size.width/2) - (labelSize.width/2) 
     titleLabelFrame.origin.y = fitBoxRect.origin.y + imageFrame.size.height + kTextTopPadding 
     self.titleLabel!.frame = titleLabelFrame 
     self.titleLabel!.textAlignment = .center 
    } 
} 

. 내 문제는 UIStackView에서 사용할 때입니다. 내가 서로 옆에 5 개의 버튼을 가지고 있으므로 UITabBar과 비슷한 것을 만들고 있습니다. 가운데 버튼을 화면 가운데에 놓고 싶지만 항상 옆으로 몇 픽셀 있습니다. UIStackView에 대한 제약 조건을 확인하고 괜찮습니다. 중간에있는 모든 버튼을 제거하고 정확히 중간에 있습니다. UIStackView (채우기, 가운데 맞춤, 등등 채우기 등)에 대해 다른 옵션을 시도했습니다. 아무것도 도움이되지 않습니다. 누구든지 어떤 생각을 가지고 있습니까? 각 버튼마다 크기가 다른 아이콘이 있고 텍스트도 다릅니다 (무료, 프리미엄 등 - 때로는 아이콘 크기가 작을 수도 있음). 관련성이 있습니까?

내 StackView의 예 (중간입니다 빨간색 선은 방송) :

Example of my StackView

답변

0

이미지 크기가 여기에 해당 될 것입니다. 5 개의 이미지를 모두 똑같은 크기로 만들면 더 이상이 문제가 발생하지 않습니다. 이를 수행 한 후 '동일하게 채우기'를 사용하면 원하는 결과를 얻을 수 있습니다.

관련 문제