2015-09-03 7 views
5

के साथ इसके पर्यवेक्षण के भीतर एक दृश्य केंद्रित करना मैं आईओएस के लिए Masonry का उपयोग करने की कोशिश कर रहा हूं। मेरे पास एक लेबल और एक दृश्य है।चिनाई

मैं दृश्य में लेबल जोड़ना चाहता हूं और इसे क्षैतिज रूप से दृश्य में केंद्रित करना चाहता हूं।

हालांकि चिनाई के साथ मैं जो बाधा उत्पन्न करता हूं वह ठीक से काम नहीं करता है।

UILabel *a = [UILabel new]; 
a.text = @"Hi"; 
a.textColor = [UIColor blackColor]; 
[a sizeToFit]; 

UIView *b = [UIView new]; 
b.frame = CGRectMake(0, 0, CGRectGetWidth(a.frame) + 18.0f, 19.0f); 
[b addSubview:a]; 

[a mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.centerX.equalTo(b.mas_centerX); 
}]; 

मेसनरी के साथ सही ढंग से इसके "पर्यवेक्षण" के भीतर एक दृश्य को कैसे केंद्रित किया जाए?

+0

आपका कोड के लिए काम करता है मैं, क्या आप समझा सकते हैं कि आपकी तरफ से क्या काम नहीं करता है? यदि दृश्य को अपने पर्यवेक्षण के अंदर होना है, तो 'make.centerX' को कॉल करना पर्याप्त नहीं होगा, इसे देखने के लिए लंबवत स्थिति में रखने के लिए' make.center.equalTo (b) '। – Daehn

+0

आह, क्षमा करें, मैं केवल क्षैतिज केंद्र बनाना चाहता हूं। मेरे लिए जब मैं उस बाधा का उपयोग करता हूं (मेरे उदाहरण में) सबव्यूव नहीं दिखाता है। –

उत्तर

6

यह काम करता है अगर आप एक शीर्ष बाधा जोड़ें:

[a mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.top.equalTo(@0) 
    make.centerX.equalTo(b); 
}]; 

हालांकि आप कर सकते थे ऑटो लेआउट सभी तरह और frame और sizeToFit सामान की स्थापना से छुटकारा पाने:

UILabel *a = [UILabel new]; 
a.text = @"Hi"; 
a.textColor = [UIColor blackColor]; 

UIView *b = [UIView new]; 
[b addSubview:a]; 

[a mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.top.equalTo(@0); 
    make.centerX.equalTo(b); 
}]; 

[b mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.width.equalTo(a).with.offset(18) 
    make.height.equalTo(a) 
}]; 
+0

यह एक अच्छा विचार है। धन्यवाद –

संबंधित मुद्दे