हो सकता है कि मेरी आंखें मुझे धोखा दे रही हों, लेकिन आईफोन के फोन ऐप के समान नंबर पैड के लिए गोल बटन बनाने के लिए इस कोड का उपयोग करने के बाद:

        for subStack in (mainStackView?.arrangedSubviews)! {

            for thisView in (subStack.subviews) {

                if let button = thisView as? UIButton {


                    button.layer.borderWidth = 2
                    button.layer.borderColor = orangeBorderColor

                    button.frame.size.width = 76
                    button.frame.size.height = 76
                    button.layer.cornerRadius = 0.5 * (button.bounds.size.height)
                    button.layer.masksToBounds = true
//                    button.clipsToBounds = true
                    button.backgroundColor = UIColor.lightGray
                    button.titleLabel?.font = button.titleLabel?.font.withSize(30)
                    button.setTitleColor(.black, for: .normal)
                }
            }
        }

मुझे ऐसी चीजें मिलती हैं जो इस तरह दिखती हैं:

enter image description here

मैंने clipsToBounds, maskToBounds का उपयोग करने की कोशिश की है, मैंने बटन की .frame और इसकी .bounds संपत्ति को अंकगणित के आधार के रूप में आजमाया है, लेकिन वे अभी भी नोडुलर दिखते हैं मेरे लिए गोल।

क्या कोई कृपया उन्हें सुचारू करने के लिए कोई सुझाव दे सकता है?

धन्यवाद!

संपादित करें

जब मैं इसे जोड़ता हूं:

                print(button.frame.size as Any)
                print(button.bounds.size as Any)
                print(button.layer.cornerRadius as Any)

मुझे यह कंसोल में मिलता है:

(76.0, 76.0)
(76.0, 76.0)
38.0
0
rattletrap99 7 सितंबर 2018, 04:35

1 उत्तर

सबसे बढ़िया उत्तर

आप बाधाओं का उपयोग करके निर्धारित दृश्यों के फ्रेम को सीधे सेट नहीं कर सकते हैं, और बाधाओं का उपयोग करके स्टैक व्यू के व्यवस्थित सबव्यू को निर्धारित किया जाना चाहिए। यह तुम्हारी समस्या है। ऑटो लेआउट (बाद में) फ्रेम सेट करने के आपके प्रयास को ओवरराइड कर रहा है, इसलिए आपके कोने का दायरा आपके बटनों के आकार से मेल नहीं खाता है।

UIButton का उपवर्ग बनाएं। अपने उपवर्ग में, बटन का cornerRadius सेट करने के लिए layoutSubviews को ओवरराइड करें (और super.layoutSubviews को कॉल करना न भूलें)।

2
rob mayoff 7 सितंबर 2018, 05:59