বুলেট পয়েন্ট সহ ইউআইএলবেল ফর্ম্যাট করবেন?


89

এটি ফরম্যাট করা সম্ভব textএকটি UILabelএকটি দেখানোর জন্য বুলেট পয়েন্ট ?

যদি তা হয় তবে আমি কীভাবে এটি করতে পারি?


@ হক: UILabelগুলি তাদের পাঠ্যকে এইচটিএমএল হিসাবে বিবেচনা করবেন না।
বেন জোটো

4
এই জন্য এখানে একটি ক্লাস! codeload.github.com/eyalc/ECListView/zip/master
হেমং

20
কেন এটি অফ-টপিক হিসাবে বন্ধ? এটি বৈধ উত্তর সহ একটি বৈধ প্রশ্ন।
লেন

4
পৃথিবীতে কেন এই দ্বারা বিষয় বন্ধ হিসাবে চিহ্নিত আছে stackoverflow.com/users/237838/andrew-barber তার সম্ভবত একটি ডুপ্লিকেট কিন্তু বিষয় বন্ধ কোন মানে ...
AppHandwerker

4
শর্টকাট কীALT+8 = •
TheTiger

উত্তর:


164

আপনার স্ট্রিংয়ে বুলেট চরিত্রের জন্য সম্ভবত ইউনিকোড কোড পয়েন্টটি ব্যবহার করবেন?

উদ্দেশ্য গ

myLabel.text = @"\u2022 This is a list item!";

সুইফট 4

myLabel.text = "\u{2022} This is a list item!"

4
আমার অজ্ঞতা ক্ষমা করুন তবে আমি ইউআইএলএবেলগুলি সমস্ত সময় ব্যবহার করি এবং আমি অবাক হয় যে আপনি যদি "উদাহরণস্বরূপ" চিহ্নিত করতে পারেন।
ডেভম্যাক

4
myLabel.numberOfLines = 0আপনাকে একটি মাল্টি-লাইন লেবেল দেয় যা লাইন ব্রেকের অক্ষরগুলিকে সম্মান করবে। সাধারণভাবে যদিও আমি UITextFieldএটি ব্যবহার করতে পছন্দ করি কারণ এটি আরও নমনীয়। উদাহরণস্বরূপ, আপনি সহজেই সনাক্ত করতে পারবেন যে কোনও ব্যবহারকারীর সাথে কোন চরিত্রটি যখন ট্যাপ করে কাজ করেছিল তখন কোনটি দিয়ে UITextFieldআপনি এটি করতে পারবেন বলে আমি মনে করি না UILabel। পাঠ্য দর্শনগুলিতে আরও অনেক ঝরঝরে বৈশিষ্ট্য রয়েছে।
জন এর্ক

7
আর একটি উপায় ব্যবহার করা হচ্ছেoption+8
অতুলখাত্রী

4
আপনি যদি স্থানীয়করণযোগ্য স্ট্রিংগুলি ব্যবহার করেন তবে মূলধন 'আপনি' ব্যবহার করতে ভুলবেন না: 20 U2022
নিকোলাজ নীলসেন


80

শুধু যোগ কর " • "

এমনকি আমি আমার জন্য এরকম কিছু খুঁজছিলাম textView। আমি যা করেছি, কেবল আমার স্ট্রিংয়ের সাথে উপরে স্ট্রিং যুক্ত করুন এবং এটি আমার কাছে দিন textView, labelsএটিও করা যেতে পারে ।

আমি ভবিষ্যতের দর্শকদের জন্য এটির উত্তর দিয়েছি।


For আমার জন্য কাজ করেছেন। আমি এক্সকোডে * পেয়েছিলাম মাত্র copy ব্যবহার করে অনুলিপি / প্রতিস্থাপন করেছি এবং এটি আমার লেবেলের পক্ষে ঠিক কাজ করেছে আমি "লেবেল" এর পরিবর্তে •
ব্রায়ান

55

সুইফটের সাথে এখানে দুর্দান্ত সমাধান দেওয়া হয়েছে

let label = UILabel()
label.frame = CGRect(x: 40, y: 100, width: 280, height: 600)
label.textColor = UIColor.lightGray
label.numberOfLines = 0

let arrayString = [
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
    "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
    "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
    "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
]

label.attributedText = add(stringList: arrayString, font: label.font, bullet: "")

self.view.addSubview(label)

বুলেট বৈশিষ্ট্য যুক্ত করুন

func add(stringList: [String],
         font: UIFont,
         bullet: String = "\u{2022}",
         indentation: CGFloat = 20,
         lineSpacing: CGFloat = 2,
         paragraphSpacing: CGFloat = 12,
         textColor: UIColor = .gray,
         bulletColor: UIColor = .red) -> NSAttributedString {

    let textAttributes: [NSAttributedStringKey: Any] = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: textColor]
    let bulletAttributes: [NSAttributedStringKey: Any] = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: bulletColor]

    let paragraphStyle = NSMutableParagraphStyle()
    let nonOptions = [NSTextTab.OptionKey: Any]()
    paragraphStyle.tabStops = [
        NSTextTab(textAlignment: .left, location: indentation, options: nonOptions)]
    paragraphStyle.defaultTabInterval = indentation
    //paragraphStyle.firstLineHeadIndent = 0
    //paragraphStyle.headIndent = 20
    //paragraphStyle.tailIndent = 1
    paragraphStyle.lineSpacing = lineSpacing
    paragraphStyle.paragraphSpacing = paragraphSpacing
    paragraphStyle.headIndent = indentation

    let bulletList = NSMutableAttributedString()
    for string in stringList {
        let formattedString = "\(bullet)\t\(string)\n"
        let attributedString = NSMutableAttributedString(string: formattedString)

        attributedString.addAttributes(
            [NSAttributedStringKey.paragraphStyle : paragraphStyle],
            range: NSMakeRange(0, attributedString.length))

        attributedString.addAttributes(
            textAttributes,
            range: NSMakeRange(0, attributedString.length))

        let string:NSString = NSString(string: formattedString)
        let rangeForBullet:NSRange = string.range(of: bullet)
        attributedString.addAttributes(bulletAttributes, range: rangeForBullet)
        bulletList.append(attributedString)
    }

    return bulletList
}

ফলাফল এখানে:

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


এটি একটি খুব মার্জিত সমাধান।
জেরোইন

10

ইন সুইফট 4 আমি নতুন লাইন দিয়ে ব্যবহার করেছেন "•"

 @IBOutlet weak var bulletLabel: UILabel!
 let arrayOfLines = ["Eat egg for protein","You should Eat Ghee","Wheat is with high fiber","Avoid to eat Fish "]
 for value in arrayOfLines {
     bulletLabel.text = bulletLabel.text!  + " • " + value + "\n"
  }

আউটপুট:

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


9
কেন মাছ
এড়বেন

কেবল এটি অনুলিপি করুন এবং আটকান -> •
বিজয় পাতিদার


3

এই লিঙ্কটি দেখুন, আমি বুলেট পয়েন্ট / অন্যান্য চিহ্ন / চিত্রের সাথে পাঠ্য বিন্যাস করতে (কাস্টম ভিউ তৈরি করেছি) (ইউআইএলবেলের অ্যাট্রিবিউটটেক্সট সম্পত্তি ব্যবহার করে) তালিকা আইটেমের চিহ্ন হিসাবে (সুইফট 3.0.০) https://github.com/akshaykumarboth/SymbolTextLabel-iOS- সুইফট

 import UIKit

    class ViewController: UIViewController {

    @IBOutlet var symbolView: SymbolTextLabel!

    var testString = "Understanding the concept of sales"

    var bulletSymbol = "\u{2022}" 
    var fontsize: CGFloat= 18
    override func viewDidLoad() {

        super.viewDidLoad()
         //First way // Dynamically creating SymbolTextLabel object

        let symbolTextLabel = SymbolTextLabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))

        symbolTextLabel.setText(text: testString, symbolCode: bulletSymbol) //setting text and symbol of text item

        symbolTextLabel.setFontSize(textSize: fontsize) // setting font size

        //symbolTextLabel.setSpacing(spacing: 5) // setting space between symbol and text

        self.view.addSubview(symbolTextLabel) 
//second way // from storyboard or interface builder

     symbolView.setText(text: testString, symbolCode: bulletSymbol)
 //setting text and symbol of text item 

    symbolView.setFontSize(textSize: fontsize) // setting font size

        //symbolView.setSpacing(spacing: 5) // setting space between symbol and text

         } 
    }

2

আপনি যদি বুলেট পয়েন্টগুলির জন্য পাঠ্য ইনডেন্টিং পাশাপাশি প্রান্তিককরণ করতে চান তবে আপনি নীচের পদ্ধতিটি ব্যবহার করতে পারেন NSAttributedStringযা সঠিক ইনডেন্টেশন এবং ফাঁক দেওয়ার বৈশিষ্ট্য সহ একটি তৈরি করে:

- (NSAttributedString *)attributedStringForBulletTexts:(NSArray *)stringList
                                              withFont:(UIFont *)font
                                          bulletString:(NSString *)bullet
                                           indentation:(CGFloat)indentation
                                           lineSpacing:(CGFloat)lineSpacing
                                      paragraphSpacing:(CGFloat)paragraphSpacing
                                             textColor:(UIColor *)textColor
                                           bulletColor:(UIColor *)bulletColor {

    NSDictionary *textAttributes = @{NSFontAttributeName: font,
                                 NSForegroundColorAttributeName: textColor};
    NSDictionary *bulletAttributes = @{NSFontAttributeName: font, NSForegroundColorAttributeName: bulletColor};

    NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
    paragraphStyle.tabStops = @[[[NSTextTab alloc] initWithTextAlignment: NSTextAlignmentLeft location:indentation options:@{}]];
    paragraphStyle.defaultTabInterval = indentation;
    paragraphStyle.lineSpacing = lineSpacing;
    paragraphStyle.paragraphSpacing = paragraphSpacing;
    paragraphStyle.headIndent = indentation;

    NSMutableAttributedString *bulletList = [NSMutableAttributedString new];

    for (NSString *string in stringList) {
        NSString *formattedString = [NSString stringWithFormat:@"%@\t%@\n", bullet, string];
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:formattedString];
        if (string == stringList.lastObject) {
            paragraphStyle = [paragraphStyle mutableCopy];
            paragraphStyle.paragraphSpacing = 0;
        }
        [attributedString addAttributes:@{NSParagraphStyleAttributeName: paragraphStyle} range:NSMakeRange(0, attributedString.length)];
        [attributedString addAttributes:textAttributes range:NSMakeRange(0, attributedString.length)];

        NSRange rangeForBullet = [formattedString rangeOfString:bullet];
        [attributedString addAttributes:bulletAttributes range:rangeForBullet];
        [bulletList appendAttributedString:attributedString];
    }

    return bulletList;
}

এবং আপনি এই পদ্ধতিটি নিম্নরূপে NSArrayপাঠ্যগুলির সাথে পাস করে এবং আপনার কাছে ইতিমধ্যে একটি সরবরাহ করে ব্যবহার করতে পারেন UILabel:

NSArray *stringArray = @[@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
                         @"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
                         @"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
                         @"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
                         ];

label.attributedText = [self attributedStringForBulletTexts:stringArray
                                                   withFont:label.font
                                               bulletString:@"•"
                                                indentation:15
                                                lineSpacing:2
                                           paragraphSpacing:10
                                                  textColor:UIColor.blackColor
                                                bulletColor:UIColor.grayColor];

1

হ্যাঁ. নিম্নলিখিত বুলেটটি অনুলিপি করুন এবং পেস্ট করুন: সুইফটের সংকলক এক্সকোডের মধ্যে বুলেটটিকে পছন্দসইভাবে ব্যাখ্যা করতে এবং প্রদর্শন করতে পারে, অন্য কিছুই দরকার নেই।

পুনঃব্যবহার

extension String {
    static var bullet: String {
        return "• "
    }
}


print(String.bullet + "Buy apples")
let secondPoint: String = .bullet + "Buy oranges"
print(secondPoint)

আউটপুট

• Buy apples
• Buy oranges

পুনরায় ব্যবহারযোগ্য অ্যারে

extension Array where Element == String {

    var bulletList: String {
        var po = ""
        for (index, item) in self.enumerated() {
            if index != 0 {
                po += "\n"
            }
            po += .bullet + item
        }
        return po
    }
}


print(["get apples", "get oranges", "get a bannana"].bulletList)

আউটপুট

get apples
• get oranges
• get a bannana

4
আপনি যদি ডাউনটা করেন। অন্তত কেন সৌজন্য বলতে হবে।
স্কটিব্ল্যাডেস

আমি মনে করি কারণটি আপনার সমাধানটি সর্বোত্তম না হওয়ার কারণে। ইউনিকোড কোড পয়েন্ট ব্যবহার করা সবচেয়ে ভাল।
রবার্ট জে Clegg

চিন্তাশীল প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ। কেন ইউনিকোড পয়েন্ট ভাল?
স্কটিব্ল্যাডেস

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

4
@ রবার্টজে.ক্লেগ পুনরায় ব্যবহারযোগ্য বিকল্প সরবরাহ করতে আমি আমার উত্তরটি আপডেট করেছি updated আপনি যখন একটি কোড পয়েন্ট স্ট্রিংটি বুলেট পয়েন্টকে সরাসরি বুলেট পয়েন্ট স্ট্রিংয়ের চেয়ে বেশি পুনরায় ব্যবহারযোগ্য করে তোলে তার একটি উদাহরণ দিতে পারেন?
স্কটিবিলেডস

0

আমার মতো বুলেট পয়েন্ট সহ যদি কেউ পাঠ্যদর্শন পাঠ্যের সন্ধান করে তবে নীচের উত্তরটি দেওয়া হবে। উপায় দ্বারা এটি কেবল স্থির পাঠ্যের জন্যই কাজ করে।

•   Better experience - Refer a friend and How to Play \n• Tournaments performance improvement\n• UI/UX Improvements\n• Critical bug fixes

আমি উপরের পাঠ্য দর্শনের জন্য নিযুক্ত করেছি to এটি আমার উদ্দেশ্যে হিসাবে কাজ করেছে।


0

সুইট 5 NSAttributedStringএক্সটেনশনে রিফ্যাক্টর @ ক্রুনাল থেকে সমাধান এখানে দেওয়া হয়েছে :

import UIKit

public extension NSAttributedString {
    static func makeBulletList(from strings: [String],
                               bulletCharacter: String = "\u{2022}",
                               bulletAttributes: [NSAttributedString.Key: Any] = [:],
                               textAttributes: [NSAttributedString.Key: Any] = [:],
                               indentation: CGFloat = 20,
                               lineSpacing: CGFloat = 1,
                               paragraphSpacing: CGFloat = 10) -> NSAttributedString
    {
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.defaultTabInterval = indentation
        paragraphStyle.tabStops = [
            NSTextTab(textAlignment: .left, location: indentation)
        ]
        paragraphStyle.lineSpacing = lineSpacing
        paragraphStyle.paragraphSpacing = paragraphSpacing
        paragraphStyle.headIndent = indentation

        let bulletList = NSMutableAttributedString()

        for string in strings {
            let bulletItem = "\(bulletCharacter)\t\(string)\n"

            var attributes = textAttributes
            attributes[.paragraphStyle] = paragraphStyle

            let attributedString = NSMutableAttributedString(
                string: bulletItem, attributes: attributes
            )

            if !bulletAttributes.isEmpty {
                let bulletRange = (bulletItem as NSString).range(of: bulletCharacter)
                attributedString.addAttributes(bulletAttributes, range: bulletRange)
            }

            bulletList.append(attributedString)
        }

        if bulletList.string.hasSuffix("\n") {
            bulletList.deleteCharacters(
                in: NSRange(location: bulletList.length - 1, length: 1)
            )
        }

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