{"id":19709940,"url":"https://github.com/xiangwangfeng/m80attributedlabel","last_synced_at":"2025-05-16T04:03:40.023Z","repository":{"id":10877020,"uuid":"13165331","full_name":"xiangwangfeng/M80AttributedLabel","owner":"xiangwangfeng","description":"Another attributed label using CoreText","archived":false,"fork":false,"pushed_at":"2024-06-05T10:45:37.000Z","size":559,"stargazers_count":746,"open_issues_count":0,"forks_count":186,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-05-16T04:03:16.708Z","etag":null,"topics":["attributedlabel","attributedstring","coretext","objective-c"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xiangwangfeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-09-28T01:58:45.000Z","updated_at":"2025-03-28T09:29:58.000Z","dependencies_parsed_at":"2024-06-18T12:29:08.273Z","dependency_job_id":"b6c60df0-dd45-47a5-96d4-4caf577e095b","html_url":"https://github.com/xiangwangfeng/M80AttributedLabel","commit_stats":{"total_commits":93,"total_committers":4,"mean_commits":23.25,"dds":"0.18279569892473113","last_synced_commit":"ab91198161ac16db5d42afef684a43bd2c4ca594"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiangwangfeng%2FM80AttributedLabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiangwangfeng%2FM80AttributedLabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiangwangfeng%2FM80AttributedLabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xiangwangfeng%2FM80AttributedLabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xiangwangfeng","download_url":"https://codeload.github.com/xiangwangfeng/M80AttributedLabel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254464891,"owners_count":22075570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attributedlabel","attributedstring","coretext","objective-c"],"created_at":"2024-11-11T22:05:23.618Z","updated_at":"2025-05-16T04:03:40.005Z","avatar_url":"https://github.com/xiangwangfeng.png","language":"Objective-C","readme":"M80AttributedLabel\n==================\n\n\nAnother attributed label using CoreText [中文版本](./Documents/README.md)\n\n\n# Features\n* Multi-line Rich Text Display\n* Auto Link Detection and Custom Links Supported\n* Embedding Image and Custom Views\n* Following Properties Supported:\n    * `font`\n    * `textColor`\n    * `highlightColor`\n    * `linkColor`\n    * `underLineForLink`\n    * `numbersOfLines` (Truncates Last Line Supported)\n    * `textAlignment`\n    * `lineBreakMode`\n    * `lineSpacing`\n    * `paragraphSpacing`\n    * `shadowColor`\n    * `shadowOffset`\n    * `shadowBlur`\n\n    \n\n# System Requirement\n* iOS 7.0 or later\n* ARC required\n\n# Installation\n### Podfile\n```ruby\npod 'M80AttributedLabel'\n```\n### Manually\n* `git clone https://github.com/xiangwangfeng/M80AttributedLabel.git`\n* Copy files in `Class/M80AttributedLabel` to your project\n* Add `CoreText.framework` to your target\n\n# Usage\n\n## Basic\n\n```objc\n\nM80AttributedLabel *label = [[M80AttributedLabel alloc]initWithFrame:CGRectZero];\n    \nlabel.text      = @\"Hello M80AttributedLabel\";\nlabel.font      = [UIFont fontWithName:@\"Zapfino\" size:25];\nlabel.textColor = M80RGB(0xFF9F00);\nlabel.shadowColor = [UIColor grayColor];\nlabel.shadowOffset= CGSizeMake(1, 1);\nlabel.shadowBlur = 1;\n    \nlabel.frame     = CGRectInset(self.view.bounds,20,20);\n\n[self.view addSubview:label];\n   \n```\n\n\u003cimg src=\"./Documents/Images/Basic.png\" width=\"320\"\u003e\n\n## Link\n\n```objc\n\nM80AttributedLabel *label = [[M80AttributedLabel alloc]initWithFrame:CGRectZero];\n    \nNSString *text  = @\"The game which I current play is hearthstone,and its website is www.hearthstone.com.cn\";\nNSRange range   = [text rangeOfString:@\"hearthstone\"];\nlabel.text      = text;\n[label addCustomLink:[NSValue valueWithRange:range]\n            forRange:range];\nlabel.delegate = self;\n    \nlabel.frame     = CGRectInset(self.view.bounds,20,20);\n\n[self.view addSubview:label];\n\n\n```\n\n\u003cimg src=\"./Documents/Images/Link.png\" width=\"320\"\u003e\n\n\n## Image\n\n```objc\n\n\nM80AttributedLabel *label = [[M80AttributedLabel alloc]initWithFrame:CGRectZero];\nlabel.lineSpacing = 5.0;\n    \n[label appendImage:[UIImage imageNamed:@\"avatar\"] \n\t\t    maxSize:CGSizeMake(40, 40)\n       \t  margin:UIEdgeInsetsZero\n \t      alignment:M80ImageAlignmentBottom];\n    \nNSString *text  = @\"say:\\n有人问一位登山家为什么要去登山——谁都知道登山这件事既危险，又没什么实际的好处。[haha][haha][haha][haha]他回答道：“因为那座山峰在那里。”我喜欢这个答案，因为里面包含着幽默感——明明是自己想要登山，偏说是山在那里使他心里痒痒。除此之外，我还喜欢这位登山家干的事，没来由地往悬崖上爬。[haha][haha][haha]它会导致肌肉疼痛，还要冒摔出脑子的危险，所以一般人尽量避免爬山。[haha][haha][haha]用热力学的角度来看，这是个反熵的现象，所发趋害避利肯定反熵。\";\n    \n//replace [haha] by image\nNSArray *components = [text componentsSeparatedByString:@\"[haha]\"];\nNSUInteger count = [components count];\nfor (NSUInteger i = 0; i \u003c count; i++)\n{\n    [label appendText:[components objectAtIndex:i]];\n    if (i != count - 1)\n    {\n        [label appendImage:[UIImage imageNamed:@\"haha\"]\n                       maxSize:CGSizeMake(15, 15)\n                        margin:UIEdgeInsetsZero\n                     alignment:M80ImageAlignmentCenter];\n    }\n}\n    \nlabel.frame     = CGRectInset(self.view.bounds,20,20);\n[self.view addSubview:label];\n    \n    \n```\n\n\u003cimg src=\"./Documents/Images/Image.png\" width=\"320\"\u003e\n\n## Attachemnt\n\n```objc\n\nM80AttributedLabel *label = [[M80AttributedLabel alloc]initWithFrame:CGRectZero];\n    \nfor (NSInteger i = 0; i \u003c 3; i++)\n{\n\t[label appendText:@\"Click the icon to fire event\"];\n\t\n\tUIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];\n\tbutton setBackgroundImage:[UIImage imageNamed:@\"play\"] forState:UIControlStateNormal];\n\t[button addTarget:self\n              action:@selector(buttonClicked:)\n    forControlEvents:UIControlEventTouchUpInside];\n    [button setBounds:CGRectMake(0, 0, 30, 30)];\n    [button setTag:i];\n    [label appendView:button];\n        \n    [label appendText:@\"\\n\\n\\n\"];\n}\n    \n\nlabel.frame     = CGRectInset(self.view.bounds,20,20);\n[self.view addSubview:label];\n\n```\n\n\u003cimg src=\"./Documents/Images/Attachment.png\" width=\"320\"\u003e\n\n# Contact\n* https://github.com/xiangwangfeng\n* xiangwangfeng@gmail.com \n* http://weibo.com/epmao\n\n[Apache]: http://www.apache.org/licenses/LICENSE-2.0\n[MIT]: http://www.opensource.org/licenses/mit-license.php\n[GPL]: http://www.gnu.org/licenses/gpl.html\n[BSD]: http://opensource.org/licenses/bsd-license.php\n\n# License\n\nM80AttributedLabel is available under the [MIT license][MIT]. See the LICENSE file for more info.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiangwangfeng%2Fm80attributedlabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxiangwangfeng%2Fm80attributedlabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiangwangfeng%2Fm80attributedlabel/lists"}