এনএসএট্রিবিউটেড স্ট্রিং পাঠ্য প্রান্তিককরণ যুক্ত করুন


109

আমি কীভাবে কোনও এনএসএট্রিবিউটেড স্ট্রিংয়ে পাঠ্য প্রান্তিককরণের বৈশিষ্ট্যটি পাঠাতে পারি?

সম্পাদনা: আমি কি কিছু ভুল করছি? এটি প্রান্তিককরণ পরিবর্তন বলে মনে হচ্ছে না।

CTParagraphStyleSetting setting;
setting.spec = kCTParagraphStyleSpecifierAlignment;
setting.valueSize = kCTCenterTextAlignment;

CTParagraphStyleSetting settings[1] = {
    {kCTParagraphStyleSpecifierAlignment, sizeof(CGFloat), &setting},           
};

CTParagraphStyleRef paragraph = CTParagraphStyleCreate(settings, sizeof(setting));

NSMutableAttributedString *mutableAttributed = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedString];
[mutableAttributed addAttributes:[NSDictionary dictionaryWithObjectsAndKeys:(NSObject*)paragraph ,(NSString*) kCTParagraphStyleAttributeName, nil] range:_selectedRange];

উত্তর:


39

হিসাবে NSAttributedStringপ্রাথমিকভাবে iOS এ কোর পাঠ্য এই দিয়ে ব্যবহার করা হয়, আপনি ব্যবহার করতে হবে CTParagraphStyleপরিবর্তে NSParagraphStyle। কোনও পরিবর্তনীয় রূপ নেই।

উদাহরণ স্বরূপ:

CTTextAlignment alignment = kCTCenterTextAlignment;

CTParagraphStyleSetting alignmentSetting;
alignmentSetting.spec = kCTParagraphStyleSpecifierAlignment;
alignmentSetting.valueSize = sizeof(CTTextAlignment);
alignmentSetting.value = &alignment;

CTParagraphStyleSetting settings[1] = {alignmentSetting};

size_t settingsCount = 1;
CTParagraphStyleRef paragraphRef = CTParagraphStyleCreate(settings, settingsCount);
NSDictionary *attributes = @{(__bridge id)kCTParagraphStyleAttributeName : (__bridge id)paragraphRef};
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Hello World" attributes:attributes];

আমি না, আমি ইগোটেক্সটভিউ নামে একটি লাইব্রেরি ব্যবহার করি, এটি একটি
বিশিষ্ট

1
আপনি আপনার অনুচ্ছেদের শৈলীটি তৈরির পথে কিছু ভুল আছে। আমি যে উদাহরণটি জুড়েছি তা পরীক্ষা করে দেখুন, এটি ইগোটেক্সটভিউতে কাজ করেছে, কমপক্ষে এটি লাইনটিকে কেন্দ্রিক হিসাবে প্রদর্শন করেছে তবে জিনিসটি বগি বলে মনে হচ্ছে, কেন্দ্রিক পাঠ্যের সাহায্যে নির্বাচন সঠিকভাবে কাজ করে না।
ওমজ

হ্যাঁ এটি বাগগুলি পূর্ণ, আমি গত ৪ সপ্তাহ ধরে আমার কীবোর্ডটিতে মাথা ঠেকিয়ে যাচ্ছি fix তবে এটি একটি দুর্দান্ত শুরু ছিল, এটি ছাড়া আমি আমার সমৃদ্ধ পাঠ্য সম্পাদকটি দিয়ে কোথায় শুরু করব তা জানতাম না, আপনার উত্তরটির জন্য ধন্যবাদ এটি আমার পক্ষে কাজ করেছিল।
এআরেক্সট 1: 27

1
@omz আপনি আমার কাজ বাঁচিয়েছেন : ডি থ্যাঙ্কস
ওভিস তারিক

1
@ ববি আমি সম্মত, তবে আমি এই উত্তরটি 5 বছর আগে লিখেছি, এবং NSParagraphStyleতখন আইওএস-এ পাওয়া যায় নি।
ওমজ

266
 NSMutableParagraphStyle *paragraphStyle = NSMutableParagraphStyle.new;
 paragraphStyle.alignment                = NSTextAlignmentCenter;

 NSAttributedString *attributedString   = 
[NSAttributedString.alloc initWithString:@"someText" 
                              attributes:
         @{NSParagraphStyleAttributeName:paragraphStyle}];

সুইফট 4.2

let paragraphStyle: NSMutableParagraphStyle = NSMutableParagraphStyle()
    paragraphStyle.alignment = NSTextAlignment.center

    let attributedString = NSAttributedString(string: "someText", attributes: [NSAttributedString.Key.paragraphStyle : paragraphStyle])

1
এটি কাজ করে না NSTextAlignmentJustified। আপনি বলতে পারেন কেন? এবং আমি কীভাবে ন্যায়সঙ্গতটিকে ন্যায়সঙ্গত হিসাবে সেট করতে পারি?
স্যাম

1
দ্রষ্টব্য: স্বীকৃত উত্তরটি iOS7 এ আমার পক্ষে কার্যকর হয়নি, যদিও আমি যতটা বলতে পারি তা 100% সঠিক প্রদর্শিত হয়েছিল। এই উত্তরটি সঠিকভাবে কাজ করেছে, এবং অবশ্যই অনেক সহজ কোড :)
অ্যাডাম

আমি একই সমস্যা স্যাম রিপোর্ট সঙ্গে আছি। ব্যতীত সমস্ত প্রান্তিককরণের জন্য এটি ঠিক NSTextAlignmentJustified। এটি কি আইওএস bu বাগ?
ম্যাথিউস অ্যাব্রেউ

6
সমাধান। কেবল অভিধানে যুক্ত করুন NSBaselineOffsetAttributeName : @0
ম্যাথিউস অ্যাব্রেউ

ধন্যবাদ এটি আমার পক্ষেও কাজ করেছিল, উপায় দ্বারা কী সেই সিন্থ্যাক্সটি NSAttributedString.alloc?
klefevre

92

আমি একই ইস্যুটি অনুসন্ধান করছিলাম এবং এনএসএট্রিবিউটেড স্ট্রিংয়ে পাঠ্যটি এইভাবে সাজিয়ে রাখতে সক্ষম হয়েছি:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init] ;
[paragraphStyle setAlignment:NSTextAlignmentCenter];

NSMutableAttributedString *attribString = [[NSMutableAttributedString alloc]initWithString:string];
[attribString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [string length])];

1
এটি সেরা উত্তর, তবে আমি যখন এই প্রশ্নটি জিজ্ঞাসা করেছি তখন এই
উত্তরটিতে

এটি কেবল একটি নির্দিষ্ট পরিসরে প্রয়োগ করার কোনও উপায় আছে কি?
nburk

হ্যাঁ, পরিসীমা পরামিতি সম্পাদনা করে। NSMakeRange(0, [string length])সম্পূর্ণ স্ট্রিং প্রতিনিধিত্ব করে।
জেমুন

67

সুইফট 4.0+

let titleParagraphStyle = NSMutableParagraphStyle()
titleParagraphStyle.alignment = .center

let titleFont = UIFont.preferredFont(forTextStyle: UIFontTextStyle.headline)
let title = NSMutableAttributedString(string: "You Are Registered", 
    attributes: [.font: titleFont,    
    .foregroundColor: UIColor.red, 
    .paragraphStyle: titleParagraphStyle])

সুইফট 3.0+

let titleParagraphStyle = NSMutableParagraphStyle()
titleParagraphStyle.alignment = .center

let titleFont = UIFont.preferredFont(forTextStyle: UIFontTextStyle.headline)
let title = NSMutableAttributedString(string: "You Are Registered", 
    attributes: [NSFontAttributeName:titleFont,    
    NSForegroundColorAttributeName:UIColor.red, 
    NSParagraphStyleAttributeName: titleParagraphStyle])

(নীচের মূল উত্তর)

সুইফট ২.০+

let titleParagraphStyle = NSMutableParagraphStyle()
titleParagraphStyle.alignment = .Center

let titleFont = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
let title = NSMutableAttributedString(string: "You Are Registered",
    attributes:[NSFontAttributeName:titleFont,   
    NSForegroundColorAttributeName:UIColor.redColor(), 
    NSParagraphStyleAttributeName: titleParagraphStyle])

দুর্ভাগ্যক্রমে এনএসএট্রিবিউটেড স্ট্রিংয়ের ড্র () ফাংশনের সাথে একযোগে কাজ করে না
অ্যাশ

21

দ্রুত উত্তর 4 :

// Define paragraph style - you got to pass it along to NSAttributedString constructor
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center

// Define attributed string attributes
let attributes = [NSAttributedStringKey.paragraphStyle: paragraphStyle]

let attributedString = NSAttributedString(string:"Test", attributes: attributes)

2

দ্রুত 4:

    let paraStyle = NSMutableParagraphStyle.init()
    paraStyle.alignment = .left

    let str = "Test Message"
    let attribute = [NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 12)]

    let attrMessage = NSMutableAttributedString(string: str, attributes: attribute)


    attrMessage.addAttribute(kCTParagraphStyleAttributeName as NSAttributedStringKey, value: paraStyle, range: NSMakeRange(0, str.count))

একের পর এক পরিসীমা: এনএসমেকেরেঞ্জ (0, স্ট্রোক্যাউন্ট)
মার্টিন-গিলস

-5
[averagRatioArray addObject:[NSString stringWithFormat:@"When you respond Yes to %@ the average response to    %@ was %0.02f",QString1,QString2,M1]];
[averagRatioArray addObject:[NSString stringWithFormat:@"When you respond No  to %@ the average response to    %@ was %0.02f",QString1,QString2,M0]];

UIFont *font2 = [UIFont fontWithName:@"Helvetica-Bold" size:15];
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:12];

NSMutableAttributedString *str=[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"When you respond Yes to %@ the average response to %@ was",QString1,QString2]];
[str addAttribute:NSFontAttributeName value:font range:NSMakeRange(0,[@"When you respond Yes to " length])];
[str addAttribute:NSFontAttributeName value:font2 range:NSMakeRange([@"When you respond Yes to " length],[QString1 length])];
[str addAttribute:NSFontAttributeName value:font range:NSMakeRange([QString1 length],[@" the average response to " length])];
[str addAttribute:NSFontAttributeName value:font2 range:NSMakeRange([@" the average response to " length],[QString2 length])];
[str addAttribute:NSFontAttributeName value:font range:NSMakeRange([QString2 length] ,[@" was" length])];
// [str addAttribute:NSFontAttributeName value:font2 range:NSMakeRange(49+[QString1 length]+[QString2 length] ,8)];
[averagRatioArray addObject:[NSString stringWithFormat:@"%@",str]];

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