ইউআইবেলে আন্ডারলাইন পাঠ্য


89

স্ট্রিংয়ের একাধিক লাইন হতে পারে এমন পাঠ্যটিকে আমি কীভাবে আন্ডারলাইন করব? আমি কিছু লোককে ইউআইবিউবভিউয়ের পরামর্শ দিচ্ছি, তবে কেবল পাঠ্য রেন্ডারিংয়ের জন্য এটি অবশ্যই খুব ভারী class

আমার চিন্তাভাবনাগুলি ছিল প্রতিটি লাইনের প্রতিটি স্ট্রিংয়ের সূচনা পয়েন্ট এবং দৈর্ঘ্যটি বের করা। এবং সেই অনুযায়ী এটির নীচে একটি লাইন আঁকুন।

আমি স্ট্রিংয়ের দৈর্ঘ্য এবং প্রারম্ভিক পয়েন্টটি কীভাবে নির্ধারণ করতে পারি তাতে সমস্যার মুখোমুখি।

আমি ব্যবহার করার চেষ্টা করেছি -[UILabel textRectForBounds:limitedToNumberOfLines:], এটি কি টেক্সটটির জন্য অঙ্কন বাউন্ডিং রেক্টটি হওয়া উচিত? তাহলে আমাকে সারিবদ্ধ করার কাজ করতে হবে? কেন্দ্রের ন্যায়সঙ্গত এবং সঠিক ন্যায়সঙ্গত হলে আমি প্রতিটি লাইনের প্রারম্ভ পয়েন্ট কীভাবে পেতে পারি?


উত্তর:


137

আপনি ইউআইএলবেল এবং ড্রয়ারের পদ্ধতিতে ওভাররাইড থেকে সাবক্লাস করতে পারেন:

- (void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(ctx, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f); // RGBA
    CGContextSetLineWidth(ctx, 1.0f);

    CGContextMoveToPoint(ctx, 0, self.bounds.size.height - 1);
    CGContextAddLineToPoint(ctx, self.bounds.size.width, self.bounds.size.height - 1);

    CGContextStrokePath(ctx);

    [super drawRect:rect];  
}

ইউপিডি:
আইওএস As হিসাবে অ্যাপল ইউআইএলবেলের জন্য এনএসএট্রিবিউটেড স্ট্রিং সমর্থন যুক্ত করেছে, এখন এটি অনেক সহজ এবং একাধিক লাইনের জন্য কাজ করে:

NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
myLabel.attributedText = [[NSAttributedString alloc] initWithString:@"Test string" 
                                                         attributes:underlineAttribute];

আপনি যদি এখনও আইওএস 4 এবং আইওএস 5 সমর্থন করতে চান তবে আমি ম্যানুয়ালি লেবেলরেখার চেয়ে টিটিটিএটিগ্রিবিউটেড লেবেল ব্যবহার করার পরামর্শ দেব । তবে আপনার যদি এক-লাইন ইউআইএলবেলকে আন্ডারলাইন করতে হয় এবং তৃতীয় পক্ষের উপাদানগুলি ব্যবহার করতে না চান তবে উপরের কোডটি এখনও কৌশলটি কাজ করবে।


4
আমার ধারণা এই স্ট্রিংয়ের শেষ লাইনের জন্য কেবল একটি আন্ডারলাইন আঁকবে, ঠিক? অন্যান্য লাইনে স্ট্রিংয়ের আন্ডারলাইন সম্পর্কে কী?
সেমিক্স

4
এটি একাধিক লাইন করে না, তবে এটি আমি খুঁজে পেতে পারি এটি সেরা, সুতরাং আমি অনুমান করি যে একাধিক লাইন প্রশ্নটির বাইরে। আমার ধারণা পরবর্তী পরবর্তী সমাধানটি হ'ল ফন্টটি আমদানি করা যা ফন্টের মধ্যে একটি আন্ডারলাইন তৈরি করা থাকে। এটি কেবল আইওএস 4.0+ থেকে কাজ করবে যেখানে আপনি ফন্টগুলি আমদানি করতে পারবেন।
ডোনালিয়া

হাই, আমি এটি ios ui মানগুলির কোনও লঙ্ঘন করে কিনা তা জানতে চাই।
thndrkiss

অ্যাপলের বাস্তবায়ন (দ্বিতীয় পরামর্শ) লাইনের নীচে যাওয়া অক্ষরগুলিকে সমর্থন করে না? স্ক্রিনকাস্ট.
com

যদি আমরা ইউআইএলবেলের জন্য এনএসএট্রিবিউটেড স্ট্রিং সমর্থন ব্যবহার করি, জি, পি এবং কি আন্ডারলাইন এর মতো বর্ণমালা কাটা হচ্ছে। কেউ এই সমস্যার মুখোমুখি? উদাহরণ: লগইন
dev4u

46

সুইফটে:

let underlineAttriString = NSAttributedString(string: "attriString",
                                          attributes: [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue])
label.attributedText = underlineAttriString

আপনি সুইফট 3 এ যা করতে হবে তা হ'ল পরিবর্তন।
জোশ ও'কনোর

.RawValue ব্যতীত এটি আমার জন্য ক্রাশের কারণ হয়ে দাঁড়িয়েছিল।
jackofallcode

আপনার কেবল সুইফট 4.0
18-

কেবল আন্ডারলাইন আঁকতে খুব ভার্জোজ ose
khcpietro

38

এটাই আমি করেছি। এটি মাখনের মতো কাজ করে।

1) আপনার ফ্রেমওয়ার্কগুলিতে কোরটেক্সট.ফ্রেমওয়ার্ক যুক্ত করুন।

2) আপনার ক্লাসে যেখানে আন্ডারলাইন করা লেবেল প্রয়োজন সেখানে <কোর্টেক্সট / কোরটেক্সট.h> আমদানি করুন।

3) নিম্নলিখিত কোড লিখুন।

    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"My Messages"];
    [attString addAttribute:(NSString*)kCTUnderlineStyleAttributeName
              value:[NSNumber numberWithInt:kCTUnderlineStyleSingle]
              range:(NSRange){0,[attString length]}];
    self.myMsgLBL.attributedText = attString;
    self.myMsgLBL.textColor = [UIColor whiteColor];

এই উত্তরটির জন্য আমার কাছ থেকে +1, কারণ এটি প্রকৃতপক্ষে উজ্জ্বলতার সাথে কাজ করে এবং এটি একটি নির্দিষ্ট চরিত্রের ব্যাপ্তিটিও সেট করার একটি সহজ উপায় প্রদর্শন করে (যা আমার নিজের প্রয়োজন) ধন্যবাদ! - এরিক
এরিক ভ্যান ডের নিউট

19

একটি অ্যাট্রিবিউট স্ট্রিং ব্যবহার করুন:

NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Your String"]
[attrString addAttribute:(NSString*)kCTUnderlineStyleAttributeName 
                   value:[NSNumber numberWithInt:kCTUnderlineStyleSingle] 
                   range:(NSRange){0,[attrString length]}];

এবং তারপরে লেবেলটিকে ওভাররাইড করুন - (শূন্য) অঙ্কনপ্রবন্ধ

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrString);
drawingRect = self.bounds;
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, drawingRect);
textFrame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0), path, NULL);
CGPathRelease(path);
CFRelease(framesetter);
CTFrameDraw(textFrame, ctx);
CGContextRestoreGState(ctx);

বা আরও ভাল ওভাররাইড না করে কেবল ওলিভিয়ার হালিগন দ্বারা নির্মিত ওএএচটিগ্রিবিউট লেবেল ব্যবহার করুন


4
শীর্ষ লাইনটি হওয়া উচিতNSMutableAttributedString
বোরার্ডেন

আমি ওহ্যাট্রিবিউটেড লেবেলটি ব্যবহার করার কারণে যে কারণটি ফেলেছিলাম তা হ'ল - আমার পক্ষে কমপক্ষে সঠিক পাঠ্যের উচ্চতা গণনা করা সম্ভব ছিল না। 10% ক্ষেত্রে এটি ভুল ছিল। (সম্ভবত যেহেতু আমি বিভিন্ন ফন্ট ব্যবহার করছিলাম ..)
গুঁটিস ট্রেউলেন্ডস

15

আমি উন্নত (কমপক্ষে আমার প্রয়োজনীয়তার জন্য) তৈরির জন্য কিছু সরবরাহিত উত্তরগুলি একত্রিত করেছি, ইউআইএলবেল সাবক্লাস, যা সমর্থন করে:

  • বিভিন্ন লেবেলের সীমানা সহ একাধিক পাঠ্য পাঠ্য (পাঠ্য লেবেল ফ্রেমের মাঝখানে হতে পারে বা সঠিক আকারের হতে পারে)
  • আন্ডারলাইন
  • ধর্মঘট
  • আন্ডারলাইন / স্ট্রাইকআউট লাইন অফসেট
  • লিখার বিন্যাস
  • বিভিন্ন হরফ আকার

https://github.com/ গুন্টিসট্রুল্যান্ডস / ইউন্ডারলাইনলবেল


11

লোকেরা, যারা ভিউ সাবক্লাস করতে চায় না (ইউআইএলবেল / ইউআইবাটন) ইত্যাদি ... 'ভুলে যাওয়া বাটন' কোনও লেবেল দ্বারা প্রতিস্থাপন করা যেতে পারে।

-(void) drawUnderlinedLabel {
    NSString *string = [forgetButton titleForState:UIControlStateNormal];
    CGSize stringSize = [string sizeWithFont:forgetButton.titleLabel.font];
    CGRect buttonFrame = forgetButton.frame;
    CGRect labelFrame = CGRectMake(buttonFrame.origin.x + buttonFrame.size.width - stringSize.width, 
            buttonFrame.origin.y + stringSize.height + 1 , 
            stringSize.width, 2);
    UILabel *lineLabel = [[UILabel alloc] initWithFrame:labelFrame];
    lineLabel.backgroundColor = [UIColor blackColor];
    //[forgetButton addSubview:lineLabel];
    [self.view addSubview:lineLabel];
}

4
-1 কল করার জন্য "আঁকুন ..." এমন একটি পদ্ধতি যা কোনও ইউআইএলবেল বরাদ্দ করে এবং এটিকে ভিউতে যুক্ত করে।
jcayzac

4
আমি এই অভিযোজিত থাকেন একটি বিট আরো জেনেরিক হতে: pastebin.com/QkF9ifpb মূল যদি লেবেল subview হয় হিসাব নেই।
ফোনিক্স

8
NSString *tem =self.detailCustomerCRMCaseLabel.text;
if (tem != nil && ![tem isEqualToString:@""]) {
    NSMutableAttributedString *temString=[[NSMutableAttributedString alloc]initWithString:tem];
    [temString addAttribute:NSUnderlineStyleAttributeName
                      value:[NSNumber numberWithInt:1]
                      range:(NSRange){0,[temString length]}];
    self.detailCustomerCRMCaseLabel.attributedText = temString;
}

7

আর একটি সমাধান হতে পারে (যেহেতু আইওএস 7) এর জন্য একটি নেতিবাচক মান দেওয়া হয়েছে NSBaselineOffsetAttributeName, উদাহরণস্বরূপ আপনার NSAttributedStringহতে পারে:

NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:@"my text goes here'
                                                            attributes:@{NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Regular" size:12],
                                                                         NSForegroundColorAttributeName: [UIColor blackColor],
                                                                         NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle), NSBaselineOffsetAttributeName: @(-3)}];

আশা করি এটি সাহায্য করবে ;-)



3

আপনি আন্ডারলাইনড লেবেল নামের সাথে একটি কাস্টম লেবেল তৈরি করতে পারেন এবং ড্রয়ারেক্ট ফাংশন সম্পাদনা করতে পারেন।

#import "UnderlinedLabel.h"

@implementation UnderlinedLabel

- (void)drawRect:(CGRect)rect
{
   NSString *normalTex = self.text;
   NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
   self.attributedText = [[NSAttributedString alloc] initWithString:normalTex
                                                      attributes:underlineAttribute];

   [super drawRect:rect];
}

3

এখানে সবচেয়ে সহজ সমাধান যা অতিরিক্ত কোডগুলি না লিখে আমার পক্ষে কাজ করে।

// To underline text in UILable
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"Type your text here"];
[text addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:NSMakeRange(0, text.length)];
lblText.attributedText = text;

3

কখনও কখনও আমরা বিকাশকারী যে কোনও ইউআই স্ক্রিনের ছোট ডিজাইনিং অংশে আটকে থাকি। সর্বাধিক বিরক্তিকর প্রয়োজনগুলির মধ্যে একটি লাইন পাঠ্যের অধীনে। চিন্তা করবেন না এখানে সমাধান।

এখানে চিত্র বর্ণনা লিখুন

অবিলিটিভ সি ব্যবহার করে কোনও ইউআইএলবেলে একটি পাঠ্যকে আন্ডারলাইন করা

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
label.backgroundColor=[UIColor lightGrayColor];
NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:@"Apply Underlining"];
[attributedString addAttribute:NSUnderlineStyleAttributeName value:@1 range:NSMakeRange(0,
[attributedString length])];
[label setAttributedText:attributedString];

সুইফট ব্যবহার করে ইউআইএলবেলে একটি পাঠ্যকে আন্ডারলাইন করা

 label.backgroundColor = .lightGray
 let attributedString = NSMutableAttributedString.init(string: "Apply UnderLining")
 attributedString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range:
NSRange.init(location: 0, length: attributedString.length))
 label.attributedText = attributedString

1

কোভাস কোডের একটি উন্নত সংস্করণ (রঙ এবং রেখার আকার)

@implementation UILabelUnderlined

- (void)drawRect:(CGRect)rect {

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    const CGFloat* colors = CGColorGetComponents(self.textColor.CGColor);

    CGContextSetRGBStrokeColor(ctx, colors[0], colors[1], colors[2], 1.0); // RGBA

    CGContextSetLineWidth(ctx, 1.0f);

    CGSize tmpSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(200, 9999)];

    CGContextMoveToPoint(ctx, 0, self.bounds.size.height - 1);
    CGContextAddLineToPoint(ctx, tmpSize.width, self.bounds.size.height - 1);

    CGContextStrokePath(ctx);

    [super drawRect:rect];  
}

@end

1

আমি আন্ডারলাইন সহ মাল্টলাইন ইউইলবেলের জন্য তৈরি করেছি:

হরফ আকারের জন্য 8 থেকে 13 সেট ইনট লাইনহাইট = সেলফ.ফন্ট.পয়েন্টসাইজ + 3;

ফন্টের আকারের জন্য 14 থেকে 20 সেট ইনট লাইন হাইট = সেলফ.ফন্ট.পয়েন্টসাইজ + 4;

- (void)drawRect:(CGRect)rect 

{

CGContextRef ctx = UIGraphicsGetCurrentContext();

const CGFloat* colors = CGColorGetComponents(self.textColor.CGColor);

CGContextSetRGBStrokeColor(ctx, colors[0], colors[1], colors[2], 1.0); // RGBA

CGContextSetLineWidth(ctx, 1.0f);
CGSize tmpSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, 9999)];

int height = tmpSize.height;

int lineHeight = self.font.pointSize+4;    

int maxCount = height/lineHeight;

float totalWidth = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(1000, 9999)].width;

for(int i=1;i<=maxCount;i++)

{

    float width=0.0;
    if((i*self.frame.size.width-totalWidth)<=0)
        width = self.frame.size.width;
    else
        width = self.frame.size.width - (i* self.frame.size.width - totalWidth);
    CGContextMoveToPoint(ctx, 0, lineHeight*i-1);
    CGContextAddLineToPoint(ctx, width, lineHeight*i-1);
}

CGContextStrokePath(ctx);

[super drawRect:rect]; 
}

0

কোভপাস যেমন দেখিয়েছে আপনি বেশিরভাগ ক্ষেত্রেই বাউন্ডিং বাক্সটি ব্যবহার করতে পারেন, যদিও এটি সর্বদা গ্যারান্টিযুক্ত নয় যে আবদ্ধ বাক্সটি পাঠ্যের চারপাশে ঝরঝরে ফিট করবে। 50 এর উচ্চতা এবং 12 এর ফন্টের আকারের একটি বাক্স ইউআইএলবেল কনফিগারেশনের উপর নির্ভর করে আপনার পছন্দগুলি ফলাফল দিতে পারে না।

UILabel এর মধ্যে ইউআইএসটিংয়ের সঠিক মেট্রিকগুলি নির্ধারণ করতে জিজ্ঞাসা করুন এবং ইতিমধ্যে কোপাপাশ দ্বারা সরবরাহিত অঙ্কন কোড ব্যবহার করে losেরকটিযুক্ত বাউন্ডিং বক্স বা ফ্রেম নির্বিশেষে আপনার আন্ডারলাইনটি আরও ভালভাবে স্থাপন করতে এটি ব্যবহার করুন।

আপনার ইউআইএফন্টের "শীর্ষস্থানীয়" বৈশিষ্ট্যটিও দেখতে হবে যা নির্দিষ্ট ফন্টের ভিত্তিতে বেসলাইনগুলির মধ্যে দূরত্ব দেয়। বেসলাইনটি যেখানে আপনি চান যে আপনার আন্ডারলাইনটি আঁকতে হবে।

এনএসএস স্ট্রিংয়ের ইউআইকিট সংযোজনগুলি দেখুন:

(CGSize)sizeWithFont:(UIFont *)font 
//Returns the size of the string if it were to be rendered with the specified font on a single line.

(CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size 
// Returns the size of the string if it were rendered and constrained to the specified size.

(CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
//Returns the size of the string if it were rendered with the specified constraints.

কেনি মনে হয় আমি সহজেই টেক্সটের প্রথম লাইন প্রস্থের জন্য 3 টি পদ্ধতি ব্যবহার করতে পারি, তবে ২ য় তৃতীয় এবং অন্যান্য লাইনের কীভাবে? আপনি কি একটি উদাহরণ দিতে পারেন?
সেমিক্স

আমি স্বীকার করতে হবে। আপনি চান তা অর্জন করার জন্য এখন এনএসএসটিংকে ব্যবহার করার উপায় রয়েছে, যদি না অন্য কারও কাছে আরও বেশি অফার থাকে। আমি আমার আগে অন্যদের মত ইউআইওউবভিউ ব্যবহার করার জন্য এবং আপনার পাঠ্যটি ভিউতে স্টাফ করার জন্য পরামর্শ দিতে যাচ্ছি: [ওয়েবউইউ লোডএইচটিএমএল স্ট্রিং: @ "<html> <u> আন্ডারলাইন করা পাঠ্য </ </ u> </html>" বেস ইউআরএল: নীল ]; লাইনগুলি কোথায় যাওয়া উচিত তার বিন্যাস এবং সংকল্পটি এটি করতে দিন। এটি যদি আপনার বিষয় হয় তবে নবম লাইনটি আন্ডারলাইন করা উচিত এবং আপনি জানতে পারবেন না কোনটি নবম লাইন, এটি অন্য একটি বিষয়।
gnasher

0

আমি একটি ওপেন সোর্স লাইন ভিউ ব্যবহার করেছি এবং এটি কেবল বোতামের সংক্ষিপ্তসারগুলিতে যুক্ত করেছি:

 UILabel *label = termsButton.titleLabel;
 CGRect frame = label.frame;
 frame.origin.y += frame.size.height - 1;
 frame.size.height = 1;
 SSLineView *line = [[SSLineView alloc] initWithFrame:frame];
 line.lineColor = [UIColor lightGrayColor];
 [termsButton addSubview:line];

এটি উপরের করিম দ্বারা অনুপ্রাণিত হয়েছিল।


আপনি কেবল ইউআইভিউইউ ব্যবহার করতে পারেন। ইউআইভিউ * লাইন = [[ইউআইভিউ বরাদ্দ] initWithFrame: ফ্রেম]; লাইন.ব্যাকগ্রাউন্ড কালার = [ইউআইকিওলোর লাইট গ্রে কালার];
dzeikei

0

কোভ্পাস এবং ড্যামিয়েন প্র্যাকার উত্তরগুলির উপর ভিত্তি করে, এখানে ইউআইএলবেল আন্ডারলাইনযুক্ত একটি প্রয়োগ রয়েছে যা পাঠ্য-অলিগনেমেন্টকে সমর্থন করে

#import <UIKit/UIKit.h>

@interface UILabelUnderlined : UILabel

@end

এবং বাস্তবায়ন:

#import "UILabelUnderlined.h"

@implementation DKUILabel

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)drawRect:(CGRect)rect {

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    const CGFloat* colors = CGColorGetComponents(self.textColor.CGColor);

    CGContextSetRGBStrokeColor(ctx, colors[0], colors[1], colors[2], 1.0); // RGBA

    CGContextSetLineWidth(ctx, 1.0f);

    CGSize textSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(200, 9999)];

    // handle textAlignement

    int alignementXOffset = 0;

    switch (self.textAlignment) {
        case UITextAlignmentLeft:
            break;
        case UITextAlignmentCenter:
            alignementXOffset = (self.frame.size.width - textSize.width)/2;
            break;
        case UITextAlignmentRight:
            alignementXOffset = self.frame.size.width - textSize.width;
            break;
    }

    CGContextMoveToPoint(ctx, alignementXOffset, self.bounds.size.height - 1);
    CGContextAddLineToPoint(ctx, alignementXOffset+textSize.width, self.bounds.size.height - 1);

    CGContextStrokePath(ctx);

    [super drawRect:rect];  
}


@end

স্যুইচ জন্য আইওএস 6 এর জন্য আপডেট: স্যুইচ (স্ব। কেস এনএসেক্সটএলাইনমেন্ট সেন্টার: alignementXOffset = (self.titleLabel.frame.size.width - textSize.width) / 2; বিরতি; কেস এনএসেক্সটএলাইনমেন্টআরাইট: alignementXOffset = self.titleLabel.frame.size.width - TextSize.width; বিরতি; }
pfrank

0

এখানে আরও একটি সহজ সমাধান (আন্ডারলাইন এর প্রস্থটি সবচেয়ে সঠিক নয় তবে এটি আমার পক্ষে যথেষ্ট ভাল ছিল)

আমার একটি ইউআইভিউ রয়েছে (_view_underline)যা সাদা পটভূমি, উচ্চতা 1 পিক্সেল এবং আমি পাঠ্য আপডেট করার সাথে সাথে এর প্রস্থটি আপডেট করি

// It's a shame you have to do custom stuff to underline text
- (void) underline  {
    float width = [[_txt_title text] length] * 10.0f;
    CGRect prev_frame = [_view_underline frame];
    prev_frame.size.width = width;
    [_view_underline setFrame:prev_frame];
}

0

NSUnderlineStyleAttributeName যা একটি NSNumber লাগে (যেখানে 0 কোনও আন্ডারলাইন নয়) একটি অ্যাট্রিবিউট অভিধানে যুক্ত করা যেতে পারে। আমি জানি না এটি আরও সহজ কিনা। তবে, এটি আমার উদ্দেশ্যগুলির পক্ষে সহজ ছিল।

    NSDictionary *attributes; 
    attributes = @{NSFontAttributeName:font,   NSParagraphStyleAttributeName: style, NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:1]};

    [text drawInRect:CGRectMake(self.contentRect.origin.x, currentY, maximumSize.width, textRect.size.height) withAttributes:attributes];

0

সুইফট ৪.১ ভেরি:

 let underlineAttriString = NSAttributedString(string:"attriString", attributes:
    [NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleSingle.rawValue])

label.attributedText = underlineAttriString

0

আপনি এই আমার কাস্টম লেবেল ব্যবহার করতে পারেন! আপনি সেট করতে ইন্টারফেস বিল্ডারও ব্যবহার করতে পারেন

import UIKit


class  YHYAttributedLabel : UILabel{
    
    
    @IBInspectable
    var underlineText : String = ""{
        
        didSet{

            self.attributedText = NSAttributedString(string: underlineText,
            attributes: [NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue])
        }
        
        
    }

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