এটি সম্ভাব্য কয়েকটি জটিল কারণ পেয়েছে, কিছু পূর্ববর্তী উত্তরে ইঙ্গিত করেছে:
- আপনি কী প্রান্তিককরণের চেষ্টা করছেন (কেবল সংখ্যা, কেবল অক্ষর, কেবল বড় হাতের অক্ষর বা একটি মিশ্রণ)
- প্লেসহোল্ডার
- সাফ বোতাম
কি আপনি সারিবদ্ধ করার চেষ্টা করছেন গুরুত্বপূর্ণ কারণ ফন্টে যা বিন্দু উল্লম্বভাবে লাইন উচ্চতা, ascenders, descenders ইত্যাদি কারণে কেন্দ্রিক হবে (সূত্র: ilovetypography.com ) (চিত্র ধন্যবাদ http://ilovetypography.com/2009 / 01/14 / অসম্পূর্ণ-উল্লম্ব-ম্যাট্রিক্স / )

উদাহরণস্বরূপ যখন আপনি কেবলমাত্র সংখ্যার সাথে কাজ করছেন, স্ট্যান্ডার্ড সেন্টার অ্যালাইনমেন্টটি বেশ সঠিক দেখাচ্ছে না। নীচের দুটিটির মধ্যে পার্থক্যটির তুলনা করুন, যা একই অ্যালাইনমেন্ট ব্যবহার করে (নীচের কোডে), যার মধ্যে একটি সঠিক দেখাচ্ছে এবং অন্যটি কিছুটা সামান্য দেখায়:
বর্ণের মিশ্রণের সাথে একদম ঠিক নয়:

তবে এটি ঠিক সংখ্যা হলে সঠিক দেখাচ্ছে

সুতরাং, দুর্ভাগ্যক্রমে, এটিকে দৃষ্টিভঙ্গিটি সঠিকভাবে দেখানোর জন্য এটির জন্য কিছুটা ট্রায়াল এবং ত্রুটি এবং ম্যানুয়াল অ্যাডজাস্টমেন্টের প্রয়োজন হতে পারে।
আমি নীচের কোডটি ইউআইটিেক্সটফিল্ডের একটি সাবক্লাসে রেখেছি। এটি সুপারক্লাস পদ্ধতিগুলিকে কল করে কারণ এটি স্পষ্ট বোতামটি উপস্থিত থাকার বিষয়টি বিবেচনা করে।
override func awakeFromNib() {
contentVerticalAlignment = UIControlContentVerticalAlignment.Center
}
override func textRectForBounds(bounds: CGRect) -> CGRect {
let boundsWithClear = super.textRectForBounds(bounds)
let delta = CGFloat(1)
return CGRect(x: boundsWithClear.minX, y: delta, width: boundsWithClear.width, height: boundsWithClear.height - delta/2)
}
override func editingRectForBounds(bounds: CGRect) -> CGRect {
let boundsWithClear = super.editingRectForBounds(bounds)
let delta = CGFloat(1)
return CGRect(x: boundsWithClear.minX, y: delta, width: boundsWithClear.width, height: boundsWithClear.height - delta/2)
}
override func placeholderRectForBounds(bounds: CGRect) -> CGRect {
let delta = CGFloat(1)
return CGRect(x: bounds.minX, y: delta, width: bounds.width, height: bounds.height - delta/2)
}
textFieldতারUITextFieldউদাহরণটির নাম - আপনার ভিন্ন হতে পারে। সুতরাং তার মতো কিছু থাকবেUITextField *textField = [[UITextField alloc] init];। যদি আপনি একটি ভিন্ন ভেরিয়েবল নাম (এরtextFieldপরে বাদে অন্য কিছু*)yourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenterব্যবহার করেন তবে তার পরিবর্তে আপনার প্রয়োজন ।