UIView

2009-04-09 15 views
8

में एक लेबल को केंद्रित करना UIView में किसी लेबल को केन्द्रित करने का सबसे अच्छा तरीका क्या है? यदि आपUIView

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x/2, view.frame.origin.y/2, 50.0, 50.0)]; 

पर कुछ ऐसा करते हैं तो आप लेबल के मूल बिंदु को दृश्य के केंद्र में सेट कर रहे हैं। सबसे अच्छी शर्त केंद्र संपत्ति का उपयोग कर उस बिंदु पर दृश्य के केंद्र को सेट करना होगा। तो मैं निम्नलिखित कोड का उपयोग कर की कोशिश की:

UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
aView.backgroundColor = [UIColor darkGrayColor]; 
CGRect frame = aView.frame; 

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)]; 
[aLabel setCenter:CGPointMake(frame.origin.x/2, frame.origin.y/2)]; 

एक लेबल जो ऊपरी बाएँ हाथ के कोने में देखने की सीमा के बाहर काफी है पैदावार है।

उत्तर

18

मुख्य बात आप गलत कर रहे हैं आधा आकार

हालांकि, अगर आप भी गणना करने के लिए कि इस मामले में की जरूरत नहीं है की तुलना में आधा मूल मान ले जा रहा है, बल्कि - जैसे कुछ करना निम्नलिखित:


UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
aView.backgroundColor = [UIColor darkGrayColor]; 

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)]; 
aLabel.center = aView.center; 

(ध्यान दें, आप तैरता करने के लिए उन निर्देशांक के लिए मजबूर करने की जरूरत नहीं है - इस मामले में उन्हें लेखन ints अधिक पठनीय लगता है के रूप में)।

इसके अलावा, यह शैली की बात है - लेकिन जब से आप पहले से ही संपत्ति वाक्य रचना (aView.backgroundColor) का उपयोग कर रहे आप के साथ-साथ भी केंद्र संपत्ति के लिए इसका इस्तेमाल कर सकते :-)

6

माता-पिता में क्षैतिज रूप से केंद्रित किसी भी बच्चे को स्थिति देने के लिए आप इसकी स्थिति की गणना करेंगे;

childX = (parentWidth - childWidth)/2 

(यह ऊंचाई पर भी लागू होता है)।

+0

धन्यवाद एंड्रयू। इन ज्यामितीय प्रकार समीकरणों को सीखने के लिए आपको सबसे अच्छा संसाधन कहां लगता है? बस ज्यामिति? – Coocoo4Cocoa

+4

ईमानदार होने के लिए मुझे नहीं पता, ऐसा कुछ मूल गणित है - आपके पास एक निश्चित मात्रा में स्पेस (पैरेंटविड्थ - चाइल्डविड्थ) है जिसे आप दो तरफ (/ 2) पर वितरित करना चाहते हैं। –