मैं UITableViewCell के अंदर एक लेबल और टेक्स्टफ़िल्ल्ड बनाने के लिए CGRectMake का उपयोग कर रहा हूं। यहाँ कोड है:

   label = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 0, 20)];
   label.backgroundColor = [UIColor redColor];      

   textField =
     [[UITextField alloc] initWithFrame:CGRectMake(0, 10, 0, 20)];
   textField.backgroundColor = [UIColor blueColor];

  [textField setDelegate:self]; // set the delegate to this object
  [textField addTarget:self action:@selector(textFieldDidEndOnExit)
      forControlEvents:UIControlEventEditingDidEndOnExit];

  [self.contentView addSubview:label]; // add label to the cell
  [self.contentView addSubview:textField]; // add textField to cell

सबसे पहले, मेरी समझ यह है कि मापदंडों को परिभाषित किया गया है

  CGRectMake(x, y, width, height) 

मैं सेल में जो देखता हूं वह बाईं ओर एक लेबल है जिसमें टेक्स्टफिल्ड तुरंत दाईं ओर होता है। दोनों के बीच एक छोटी सी जगह है।

मुझे उम्मीद है कि एक्स, वाई निर्देशांक सेल के ऊपरी बाएँ में 0,0 बिंदु के सापेक्ष होंगे, सकारात्मक मान नीचे और दाईं ओर जा रहे हैं।

मैं जो देखता हूं उससे भ्रमित हूं।

मैं देखता हूं कि लेबल मेरे सेल के बाईं ओर से शुरू होता है, लेकिन इसमें टेक्स्टफिल्ड के एक्स मान से एक्स मान अधिक है। टेक्स्टफिल्ड लेबल के दाईं ओर शुरू होता है।

मुझे समझ में नहीं आता क्यों प्रत्येक के लिए चौड़ाई मान 0 (शून्य) पर सेट है।

साथ ही, टेक्स्टफिल्ड सेल निर्देशांक के सापेक्ष के बजाय लेबल के सापेक्ष स्थिति लेता है।

यहाँ सेल का एक सरल स्केच है और मैं इसमें क्या देख रहा हूँ (पृष्ठभूमि रंग सेट के साथ, मैं स्पष्ट रूप से देख सकता हूँ कि CGRects कहाँ रखे जा रहे हैं):

0,0---------------------------------------------------------------------------------
|                                                                                   |
|   ----------------    -----------------------------------------------------------------
|  |                |  |    
|  |  label         |  |   textField 
|  |                |  |    
|   ----------------    -----------------------------------------------------------------
|                                                                                   |
------------------------------------------------------------------------------------

मैंने यह भी देखा है कि प्रत्येक लेबल की चौड़ाई उसकी सामग्री की लंबाई के अनुसार बदलती रहती है। मैं इसे समझता हूं, लेकिन मुझे समझ में नहीं आता कि टेक्स्टफिल्ड क्यों घूमता है, प्रत्येक मामले में लेबल से समान दूरी पर रहता है।

[संपादित करें] वैसे, "स्वयं" UITableViewCell का एक उपवर्ग है, अगर मैंने इसे स्पष्ट नहीं किया है।

16
Jim 12 अप्रैल 2011, 08:45
मुझे लगता है कि आपका मतलब [cell.contentView addSubview:label]; है, है न।
 – 
Robin
12 अप्रैल 2011, 08:56
आप यह क्यों कहते हैं कि आपको समझ में नहीं आता कि प्रत्येक के लिए चौड़ाई 0 पर क्यों सेट की जाती है जबकि आप दोनों को वाइड को 0 पर सेट करते हैं? इसे गैर-शून्य मान पर सेट करने का प्रयास करें और अपडेट करें।
 – 
Hwee-Boon Yar
13 अप्रैल 2011, 06:11

2 जवाब

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

enter image description here

14
Aravindhan 12 अप्रैल 2011, 09:03
1
मुझे लगता है कि अब आप टेबलव्यू की अवधारणा को समझ सकते हैं
 – 
Aravindhan
12 अप्रैल 2011, 09:03
सवाल टेबल व्यू के बारे में नहीं है। प्रश्न CGRectMake के व्यवहार के बारे में है। मेरा उदाहरण UITableViewCell का जिक्र कर रहा है, लेकिन मुझे लगता है कि यह शायद अप्रासंगिक है। मुख्य प्रश्न यह है कि चौड़ाई शून्य पर क्यों सेट की गई है (वह क्या करने वाला है)? और बाईं ओर लेबल की स्थिति क्यों है जब उसका x मान टेक्स्टफ़िल्ल्ड के x मान से अधिक है?
 – 
Jim
12 अप्रैल 2011, 18:00
आप चौड़ाई को 0 पर क्यों सेट करते हैं? यदि आप इसे 0 पर सेट करते हैं। उत्तर इस तरह नहीं आएगा। बस एक लाइन आएगी।
 – 
Aravindhan
14 अप्रैल 2011, 08:18
तब x और y निर्देशांक केवल नेविगेशन बार के नीचे शुरू होते हैं.. यदि आप नेविगेशन बार में बटन या लेबल जोड़ना चाहते हैं तो इसका मतलब है कि आपने UINavigationItem देखा है... developer.apple.com/library/ios/#documentation/uikit/reference/…
 – 
Aravindhan
14 अप्रैल 2011, 08:21
3
मैं अप्रैल से अब तक एक लंबा सफर तय कर चुका हूं और मैं इसे बेहतर तरीके से समझता हूं। मैं जिस ऐप का जिक्र कर रहा था, उसमें अतिरिक्त कोड द्वारा सभी पोजिशनिंग की गई थी, लेकिन जब मैंने सवाल पूछा तो मुझे यह दिखाई नहीं दिया। CGRectMake ठीक उसी तरह काम करता है जैसा कि डॉक्स में वर्णित है, और अब कोई रहस्य नहीं है।
 – 
Jim
26 अक्टूबर 2011, 02:51

एक तालिका में नेविगेशन बार के नीचे प्रिंट किए गए लेबल और टेक्स्टबॉक्स देखें। अधिक स्पष्ट रूप से टैब बार के नीचे ही यह x और y मानों को गिनना शुरू कर देता है। यह टार बार के नीचे है, यह इंगित करता है (0,0)

0
Aravindhan 12 अप्रैल 2011, 08:53
मुझे नहीं पता तुम्हारा क्या मतलब है। मेरे उदाहरण में उल्लिखित कोई टैब बार नहीं है। (टैब बार स्क्रीन के निचले भाग में होगा, बाकी सब के नीचे, यदि कोई होता तो।) प्रयास करने के लिए धन्यवाद।
 – 
Jim
12 अप्रैल 2011, 08:58