बदलने के लिए UITextField को उपclass और drawPlaceholderInRect को ओवरराइड कैसे करता हूं मेरे पास प्लेसहोल्डर टेक्स्ट सेट के साथ 3 UITextField
है। UITextField
में से एक पर मैं प्लेसहोल्डर टेक्स्ट लाल होना चाहता हूं।मैं प्लेसहोल्डर रंग
अब googling के बाद ऐसा लगता है कि ऐसा करने का सबसे अच्छा तरीका UITextField को उपclass करना है और drawPlaceholderInRect
ओवरराइड करना है।
मैं drawPlaceholderInRect
उप-वर्गीकरण और ओवरराइड करने के बारे में कैसे जा सकता हूं? मुझे इस पर कोई कोड उदाहरण या ट्यूटोरियल नहीं मिला है और मैं उद्देश्य-सी और आईओएस विकास के लिए नया हूं इसलिए इसे काम करने में मुश्किल लग रही है।
उत्तर:
एक नया उद्देश्य-सी वर्ग CustomUITextFieldPlaceholder
कहा जाता है जो UITextField
subclassed बनाया गया। CustomUITextFieldPlaceholder.m
में अपनी परियोजना में निम्न कोड
@implementation CustomUITextFieldPlaceholder
- (void)drawPlaceholderInRect:(CGRect)rect {
// Set colour and font size of placeholder text
[[UIColor redColor] setFill];
[[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]];
}
@end
ऊपर लागू करने के लिए डाल दिया
#import "CustomUITextFieldPlaceholder.h"
और
IBOutlet CustomUITextFieldPlaceHolder *txtName;
नोट: यह काम करता है और मेरा मानना है कि सही व्यवहार है, लेकिन मेरे पास है पूरी तरह से इसका परीक्षण नहीं किया। आशा है कि यह उदाहरण दूसरों को मेरी स्थिति में मदद करता है।
संपादित करें:
[[UIColor redColor] setFill];
बदल दिया
[[UIColor colorWithRed:255.0 green:0.0 blue:0.0 alpha:0.7] setFill];
तो मैं डिफ़ॉल्ट प्लेसहोल्डर नकल करने के लिए 70% तक की अस्पष्टता सेट कर सकते हैं कि के लिए।
उपवर्गीकरण और कहा कि विधि अधिभावी मदद नहीं करेगा आप फ़ॉन्ट रंग बदलने, यह सिर्फ जहां प्लेसहोल्डर प्रदर्शित किया जाता है आप अनुकूलित करने देता है। –
हो सकता है कि आप इस प्रतिनिधि विधि को ओवरराइड करने का प्रयास कर सकें - '(शून्य) drawPlaceholderInRect: (CGRect) rect' – Hisenberg