আইওএস 6-এ লেবেল সারিবদ্ধকরণ


190

দেখে মনে হচ্ছে UITextAlignmentCenterআইওএস 6-এ অবহেলা করা হয়েছে।

আমি এখনও এটি ব্যবহার করি এবং ভাল কাজ করে তবে এটি একটি সতর্কতা দেয়।

আমি এটা কিভাবে ঠিক করবো?

label.textAlignment = UITextAlignmentCenter;

ধন্যবাদ।


7
শিক্ষিত অনুমান: NSTextAlignment
জাস্টসিড

1
পরিবর্তে NSTextAlignment ব্যবহার করুন।
জয়প্রকাশ দুবে

উত্তর:


394

IOS6 এ আপনি ব্যবহার করতে পারেন

label.textAlignment = NSTextAlignmentCenter;

আশাকরি এটা সাহায্য করবে.


এটি সম্ভব যে ভবিষ্যতের সময়ে এনাম মায় পরিবর্তিত হবে এবং অপ্রত্যাশিত ফলাফলের কারণ হতে পারে। এখানেই শেষ. এক্ষেত্রে কিয়ামত দিবসের দৃশ্য নয়, তবে আরও ভাল অনুশীলনগুলি প্রাধান্য পাবে।
ব্রেন্ডেন

17
মেজর 3 আইট: এনামের পরিবর্তে ধ্রুবক সংখ্যা ব্যবহার করা ভাল নয়। এনাম কোডটির পাঠযোগ্যতার সাথে সহায়তা করে যা একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান factor এটি ভবিষ্যতে এটি ভেঙে যেতে পারে এটি কেবল অ্যাপল থেকে খারাপ নকশা, এবং তারা যদি এটি ভঙ্গ করে তবে আমি বরং আমার দিকে লক্ষ্য না করে প্রান্তিককরণটি ভুল হওয়ার ঝুঁকির চেয়ে সংকলন ত্রুটিগুলি করব।
রবিন অ্যান্ডারসন

6
রবিন পুরোপুরি সঠিক। একটি এনাম ব্যবহার সেরা অভ্যাস, সন্দেহ নেই। আপনি সবসময়ই ধরে নিতে পারেন যে এনএসটিএক্সএলটাইমেন্ট সেন্টার মানে সেন্টার, আপনি কোনওভাবেই ধরে নিতে পারবেন না যে 1 টি সর্বদা সেন্টার মানে। অ্যাপল সম্পূর্ণরূপে বোকা না হলে।
রাসমাস

একটি এনাম নির্দিষ্টভাবে তাই কোডটি ভবিষ্যতে ভঙ্গ না করে। যদি তারা সিদ্ধান্ত নেয় যে 1 টি 42 হওয়া উচিত তবে এনাম কাজ চালিয়ে যাবে, হার্ড-কোডিং মানটি ব্যর্থ হবে।
ব্রায়ান ওকলে

হ্যাঁ দয়া করে পাঠ্যলিখন = 1 সরিয়ে দিন, এটি লোককে বিভ্রান্ত করবে এবং খারাপ জ্ঞান ছড়িয়ে দেবে
মোবাইলমন

45

labelAlignmentসম্পত্তি পরিবর্তন সম্ভবত আইওএস নিয়ন্ত্রণ আরও অনেক কিছু অ্যাপলের উপস্থাপক NSAttributedStrings সঙ্গে সম্পর্কযুক্ত, সেইজন্য এবং NSText করার UIText পরিবর্তন করতে ... বৈশিষ্ট্য প্রয়োজন ... বৈশিষ্ট্য।

সুতরাং আপনি যদি iOS6 এ আপগ্রেড করেছেন তবে আপনি ক্লোভারে রয়েছেন; শুধু থেকে সুইচ UITextAlignmentCenterকরতে NSTextAlignmentCenterএবং অভিনব নতুন স্ট্রিং ভোগ করেন।

তবে আপনি যদি কোনও জটিল প্রকল্পের সাথে কাজ করছেন এবং পছন্দ করেন যে পৃথিবীটি আপনার পায়ের নীচে এত বেশি স্থান না নেমে আসে, আপনি কিছু সময়ের জন্য একটি পুরানো সংস্করণটি আটকে রাখতে চান এবং একাধিক সংস্করণের জন্য আপনার কোডটি মানিয়ে নিতে চান:

// This won't compile:
if ([label respondsToSelector:@selector(attributedText:)]) 
    label.textAlignment = UITextAlignmentCenter;
else 
    label.textAlignment = NSTextAlignmentCenter;

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

কাজের শর্তটি হ'ল কিছু শর্তযুক্ত পূর্ব প্রসেসর সংজ্ঞায়িত করা। আপনি যদি নিজের শ্রেণির এইচ ফাইলটিতে এমন কিছু রাখেন (বা সম্ভবত কোনও আমদানি করা #import <UIKit/UIKit.h>কনস্ট্যান্ট ফাইলের মধ্যে - যা নিজেই অবশ্যই এনএসটিেক্সট ... ধ্রুবক সম্পর্কে জানার জন্য অন্তর্ভুক্ত থাকতে হবে )…

#ifdef NSTextAlignmentCenter // iOS6 and later
#   define kLabelAlignmentCenter    NSTextAlignmentCenter
#   define kLabelAlignmentLeft      NSTextAlignmentLeft
#   define kLabelAlignmentRight     NSTextAlignmentRight
#   define kLabelTruncationTail     NSLineBreakByTruncatingTail 
#   define kLabelTruncationMiddle   NSLineBreakByTruncatingMiddle
#else // older versions
#   define kLabelAlignmentCenter    UITextAlignmentCenter
#   define kLabelAlignmentLeft      UITextAlignmentLeft
#   define kLabelAlignmentRight     UITextAlignmentRight
#   define kLabelTruncationTail     UILineBreakModeTailTruncation
#   define kLabelTruncationMiddle   UILineBreakModeMiddleTruncation
#endif

…তুমি এটি করতে পারো:

label.textAlignment = kLabelAlignmentCenter;

এবং এই:

label.lineBreakMode = kLabelTruncationMiddle;

প্রভৃতি

যেহেতু এই ইউআইটিেক্সট / এনএসটিেক্সট পরিবর্তনগুলি একাধিক নিয়ন্ত্রণের জন্য পপ আপ হওয়ার সম্ভাবনা রয়েছে তাই এই পদ্ধতিটি বেশ কার্যকর।

(ক্যাভেট: পূর্বোক্ত অবিচলিত পৃথিবী প্রেমীদের একজন সদস্য হওয়ার কারণে আমি এটি পুরানো সংস্করণ দিয়ে পরীক্ষা করেছি, তবে এখনও আইওএস with এর সাথে না।)


এক্সকোড 9 আইওএস 11.4 এসডিকে হিসাবে, এটি এখনও আমার জন্য সমাধান। [লেবেল ওয়ান সেটফন্ট: [ইউআইফোন্ট ফন্টউইননাম: @ "হেলভেটিকানিউ" আকার: 20]]; labelOne.textAlignment = NSTextAlignmentLeft; // নেওয়া - কেসিটি লেফটেক্সটএলাইনমেন্ট; labelOne.text = ডেটস্ট্রিট; [হেডারভিউ অ্যাডসুভিউ: লেবেল এক];
ম্যাথু ফার্গুসন

19

NSTextAlignmentCenterএর জায়গায় ব্যবহার করা যেতে পারে UITextAlignmentCenterএবং অন্যান্য প্রতিস্থাপনের তালিকা নীচে রয়েছে:

#ifdef __IPHONE_6_0 // iOS6 and later
#   define UITextAlignmentCenter    NSTextAlignmentCenter
#   define UITextAlignmentLeft      NSTextAlignmentLeft
#   define UITextAlignmentRight     NSTextAlignmentRight
#   define UILineBreakModeTailTruncation     NSLineBreakByTruncatingTail
#   define UILineBreakModeMiddleTruncation   NSLineBreakByTruncatingMiddle
#endif

1
এটি আমার পক্ষে কাজ করে। আইওএস 6.1 এবং আইওএস 5.0 এর জন্য সিমুলেটারে পরীক্ষিত।
জেএসকারি

15
#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0)
# define ALIGN_CENTER NSTextAlignmentCenter
#else
# define ALIGN_CENTER UITextAlignmentCenter
#endif

UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
label.text = @"There is no spoon";
label.textAlignment = ALIGN_CENTER;
[self addSubview:label];

আরও ভাল কিছু নির্মাণ যেমন আরও কিছু ব্যবহার করা হবে: # আইফিডেফ (__IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_6_0) .... অন্যথায় আপনি আইওএস 7-এ ইউআইটিএক্সএক্সএন্টাইনমেন্ট সেন্টার পেতে চলেছেন
রায় ফিক্স

13

আপনাকে এগুলির একটিও করতে হবে না। এক্সকোড 4.5 NSTextAlignmentCenterআইওএস 5 এ সংক্ষিপ্তকরণ ইত্যাদি সংকলন করবে ।


1
এটি সত্য বলে মনে হচ্ছে। আমার কাছে ইউআইলাইনব্রেইকমোড এবং ইউআইটিএকসেক্সএলাইনমেন্ট - এবং এনএসলাইনব্র্যাকমোড এবং এনএসটিেক্সটএলাইনমেন্টের সাথে তাদের প্রতিস্থাপনের সাথে সমস্যাটি রয়েছে - 5.0 সিমুলেটারে এক্সকোড ৪..3.৩ এ এবং আইপ্যাডে চলছে -.-।
জেএসকারি

2
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 150, 40)];
[label1 setText:@"Your String"];
[label1 setBackgroundColor:[UIColor clearColor]];
[label1 setNumberOfLines:0];
[label1 sizeToFit];

//For Center Alignment
[label1 setTextAlignment:NSTextAlignmentCenter];

//For Right Alignment
[label1 setTextAlignment:NSTextAlignmentRight];

//For Left Alignment
[label1 setTextAlignment:NSTextAlignmentLeft];

// Add the label into the view

[self.view addSubview:label1];


0

আমারও অনুরূপ সমস্যা ছিল এবং নিম্নলিখিতগুলি ব্যবহার করা হয়েছিল: বিশদলাবল.টেক্সটএলাইনমেন্ট = এনএসটেক্সটএলাইনমেন্টসেন্টার;



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.