2015-06-11 11 views
5

मैं मेरे विचार नियंत्रक के अंदर एक subclassed पाठ फ़ील्ड देखने के लिए, फ़ॉन्ट आकार के साथ बनाया गया है खिलवाड़, AdjustFontSizeToWidth सक्षम है और 10 को न्यूनतम फ़ॉन्ट आकार। मेरे टेक्स्टफील्ड में दृश्यमान फिट करने के लिए प्लेसहोल्डर टेक्स्ट बहुत बड़ा है। चौड़ाई समायोजित फ़ॉन्ट आकार सक्रिय है और सिस्टम फ़ॉन्ट के आकार को पर कम कर रहा है। मुझे बिल्कुल पता नहीं है क्यों , क्योंकि प्लेसहोल्डर अभी भी फिट नहीं है (स्क्रीनशॉट देखें) कोई विचार यह क्यों हो रहा है? क्या मुझे कुछ याद आया? मैं subclassed UITextfield और निम्न विधियों को ओवरराइड (नहीं यकीन है कि यह प्रासंगिक है, लेकिन यह तरीकों जो इस कीड़े का कारण हो सकता होने लगते हैं):UITextField उपवर्ग को adjustFontSizeToWidth

- (CGRect)leftViewRectForBounds:(CGRect)bounds { 
CGRect leftViewRect = [super leftViewRectForBounds:bounds]; 
if ([self shouldShowLeftView] == YES) { 
    CGFloat newHeight = self.frame.size.height * 0.5f; 
    if (self.leftImage) { 
     leftViewRect.size.width = newHeight; 
    } 
    leftViewRect.origin.x = kMargins; 
    leftViewRect.origin.y = (self.frame.size.height - leftViewRect.size.height)/2.0f; 
} 
return leftViewRect; 
} 


- (CGRect)textRectForBounds:(CGRect)bounds { 
CGRect rectForBounds = [super textRectForBounds:bounds]; 

if ([self shouldShowLeftView] == YES) { 
    rectForBounds.origin.x += kMargins; 
    rectForBounds.size.width -= 2.0 * kMargins; 
} else { 
    rectForBounds.origin.x += kMargins/2.0; 
    rectForBounds.size.width -= 2.0 * (kMargins/2.0); 
} 
return rectForBounds; 
} 

- (CGRect)editingRectForBounds:(CGRect)bounds { 
CGRect rectForBounds = [super editingRectForBounds:bounds]; 

if ([self shouldShowLeftView] == YES) { 
    rectForBounds.origin.x += kMargins; 
    rectForBounds.size.width -= 2.0 * kMargins; 
} else { 
    rectForBounds.origin.x += kMargins/2.0; 
    rectForBounds.size.width -= 2.0 * (kMargins/2.0); 
} 
return rectForBounds; 
} 

placeholder not fitting in the screen

संपादित करें: अद्यतन, मैं this solution का उपयोग करने की कोशिश की और प्लेसहोल्डर के लिए भी काम करने के लिए कोड को थोड़ा सा अनुकूलित किया। फ़ॉन्ट का आकार बदलना ठीक है, लेकिन जब टेक्स्ट कम हो जाता है तो UI को गड़बड़ कर दिया जाता है, टेक्स्ट बाएं छवि दृश्य के पीछे बाईं ओर ऑफसेट होता है। स्क्रीनशॉट पर, हम देख सकते हैं कि सही मार्जिन बहुत बड़ा है और बाईं ओर टेक्स्ट बहुत अधिक है। Screenshot fail new try

+0

एक सिस्टम न्यूनतम फ़ॉन्ट आकार है। जहां तक ​​आप उम्मीद कर रहे हैं, यूआईटीएक्स्टफाल्ड फ़ॉन्ट आकार को कम नहीं करेगा। – matt

+0

मेरा न्यूनतम फ़ॉन्ट आकार 10 है, और प्लेसहोल्डर के पास डिफ़ॉल्ट रूप से दिए गए 15 के बजाय 14pt के साथ एक फ़ॉन्ट है, यह शायद गलत अनुमान लगाया गया है। यही कारण है कि मैं पूछ रहा हूँ। – Loadex

उत्तर

1

आप कुछ भी नहीं खो रहे हैं - यह आईओएस का एक प्रश्न है। minimumFontSize 14 से कम मानों को एक समान प्रश्न के लिए my answer के अनुसार पूरी तरह से अनदेखा किया जाता है।

अपना मूल फ़ॉन्ट आकार 300 पर सेट करें और UITextField अभी भी 14 pt, 10 pt नहीं होगा।

14 एक विषम जादू संख्या है; अनियंत्रित, लेकिन संभवतः पठनीयता को बनाए रखने के लिए प्रयोग किया जाता है। अगर केवल यह कम हो सकता है।

+0

... और मुझे लगता है कि 14 न्यूनतम सिस्टम फ़ॉन्ट आकार मैट का उल्लेख है। –

+0

@Cowrin Newall आपके उत्तर के लिए धन्यवाद! मुझे इसके बारे में पता नहीं था। मैंने आपके अन्य उत्तर पर आपके द्वारा उल्लिखित समाधान की कोशिश की, इसे थोड़ा सा अनुकूलित किया लेकिन यह समाधान छोटी गाड़ी लग रहा है और एप्पल विधियों के कारण फ़ॉन्ट कारण खराब प्लेसमेंट को एडजस्ट कर रहा है। जब मैं अपना टेक्स्ट बदलता हूं, तो टेक्स्ट मेरी बायीं छवि के पीछे खींचा जाता है। कोई विचार क्यों/इसे ठीक करने के लिए कैसे? – Loadex

+0

मुझे यकीन नहीं है, लेकिन ऐप्पल डॉक्स में यह कहता है कि 'textRectForBounds:' सीधे कॉल नहीं करना है, और नमूना कोड करता है। क्या आपकी बाधाएं सही ढंग से सेटअप आदि हैं? बिल्कुल यकीन नहीं है कि आपकी नई समस्या कैसी दिखती है। –