Skip to content

Instantly share code, notes, and snippets.

@steviki
Created November 9, 2018 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steviki/b578fbe5151c49bfe2e56ff232156c43 to your computer and use it in GitHub Desktop.
Save steviki/b578fbe5151c49bfe2e56ff232156c43 to your computer and use it in GitHub Desktop.
let longText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Convallis aenean et tortor at risus viverra adipiscing at in. Turpis nunc eget lorem dolor sed. Donec ac odio tempor orci dapibus ultrices in iaculis. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.\n\nDolor purus non enim praesent elementum. Tortor posuere ac ut consequat semper viverra nam libero justo. Condimentum lacinia quis vel eros donec ac. Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed faucibus turpis in eu. Pellentesque sit amet porttitor eget dolor. A condimentum vitae sapien pellentesque habitant morbi tristique.\n\nMagna eget est lorem ipsum dolor sit amet consectetur. Bibendum est ultricies integer quis auctor. Fermentum dui faucibus in ornare quam viverra orci. Duis ultricies lacus sed turpis tincidunt id aliquet risus. Faucibus scelerisque eleifend donec pretium vulputate sapien.\n\nVestibulum lectus mauris ultrices eros in cursus. Massa id neque aliquam vestibulum morbi blandit cursus. Sagittis purus sit amet volutpat consequat mauris. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Vitae sapien pellentesque habitant morbi tristique. Eget duis at tellus at. A pellentesque sit amet porttitor. Ac turpis egestas maecenas pharetra convallis posuere morbi leo. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a.\nElementum tempus egestas sed sed risus pretium. Viverra adipiscing at in tellus. Sit amet est placerat in egestas. Cursus mattis molestie a iaculis at erat pellentesque adipiscing commodo. Vitae congue eu consequat ac. Vitae sapien pellentesque habitant morbi tristique senectus et netus. Mauris ultrices eros in cursus turpis. Magna fermentum iaculis eu non diam phasellus. Aenean et tortor at risus. Viverra nibh cras pulvinar mattis nunc sed. Vulputate odio ut enim blandit volutpat maecenas volutpat. Purus non enim praesent elementum facilisis. In arcu cursus euismod quis viverra nibh. Et ultrices neque ornare aenean euismod elementum nisi quis eleifend.\n\nNisi scelerisque eu ultrices vitae auctor eu augue ut lectus. Sed arcu non odio euismod lacinia at. Tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sed augue lacus viverra vitae congue eu consequat ac felis. Tellus in metus vulputate eu scelerisque felis imperdiet proin. Sit amet massa vitae tortor condimentum lacinia quis vel. Quisque sagittis purus sit amet. Sit amet cursus sit amet dictum sit amet. Varius duis at consectetur lorem donec massa sapien. Nibh sit amet commodo nulla facilisi. Faucibus in ornare quam viverra. At varius vel pharetra vel turpis nunc eget. Id venenatis a condimentum vitae sapien pellentesque habitant. Tempor nec feugiat nisl pretium fusce id. Amet aliquam id diam maecenas ultricies mi eget. Et leo duis ut diam quam nulla. Sit amet facilisis magna etiam tempor orci eu lobortis elementum. Maecenas ultricies mi eget mauris pharetra et.\n\nSit amet volutpat consequat mauris nunc congue nisi vitae suscipit. Justo eget magna fermentum iaculis eu non. Id interdum velit laoreet id donec ultrices. Et malesuada fames ac turpis egestas sed. Eu scelerisque felis imperdiet proin fermentum leo vel. Amet porttitor eget dolor morbi. Integer quis auctor elit sed. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Cursus risus at ultrices mi tempus imperdiet nulla malesuada. Quis imperdiet massa tincidunt nunc pulvinar sapien et. Eget felis eget nunc lobortis mattis aliquam. Massa sapien faucibus et molestie ac feugiat. Ipsum consequat nisl vel pretium lectus quam id leo in. Interdum consectetur libero id faucibus nisl tincidunt eget nullam non. At varius vel pharetra vel turpis nunc eget. In aliquam sem fringilla ut morbi tincidunt. Arcu dui vivamus arcu felis bibendum ut tristique et. Gravida quis blandit turpis cursus in hac habitasse platea. Sem nulla pharetra diam sit amet nisl suscipit adipiscing bibendum."
let mutableAttributedString = NSMutableAttributedString(string: longText, attributes: [.font: UIFont.systemFont(ofSize: 20.0)])
mutableAttributedString.addAttribute(.font, value: UIFont.italicSystemFont(ofSize: 20.0), range: NSRange(longText.range(of: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")!, in: longText))
mutableAttributedString.addAttribute(.foregroundColor, value: UIColor.lightGray, range: NSRange(longText.range(of: "Turpis nunc eget lorem dolor sed. Donec ac odio tempor orci dapibus ultrices in iaculis. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.")!, in: longText))
mutableAttributedString.addAttribute(.strokeWidth, value: NSNumber(value: -4.0), range: NSRange(longText.range(of: "Sed faucibus turpis in eu. Pellentesque sit amet porttitor eget dolor. A condimentum vitae sapien pellentesque habitant morbi tristique.")!, in: longText))
mutableAttributedString.addAttribute(.strokeWidth, value: NSNumber(value: 1.0), range: NSRange(longText.range(of: "Fermentum dui faucibus in ornare quam viverra orci. Duis ultricies lacus sed turpis tincidunt id aliquet risus.")!, in: longText))
let shadow = NSShadow()
shadow.shadowBlurRadius = 3
shadow.shadowColor = UIColor.darkGray
shadow.shadowOffset = CGSize(width: 2, height: 2)
mutableAttributedString.addAttribute(.shadow, value: shadow, range: NSRange(longText.range(of: "Vestibulum lectus mauris ultrices eros in cursus. Massa id neque aliquam vestibulum morbi blandit cursus. Sagittis purus sit amet volutpat consequat mauris. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Vitae sapien pellentesque habitant morbi tristique. Eget duis at tellus at.")!, in: longText))
let attributedString = mutableAttributedString as NSAttributedString
NSString *longText = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Convallis aenean et tortor at risus viverra adipiscing at in. Turpis nunc eget lorem dolor sed. Donec ac odio tempor orci dapibus ultrices in iaculis. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.\n\nDolor purus non enim praesent elementum. Tortor posuere ac ut consequat semper viverra nam libero justo. Condimentum lacinia quis vel eros donec ac. Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Sed faucibus turpis in eu. Pellentesque sit amet porttitor eget dolor. A condimentum vitae sapien pellentesque habitant morbi tristique.\n\nMagna eget est lorem ipsum dolor sit amet consectetur. Bibendum est ultricies integer quis auctor. Fermentum dui faucibus in ornare quam viverra orci. Duis ultricies lacus sed turpis tincidunt id aliquet risus. Faucibus scelerisque eleifend donec pretium vulputate sapien.\n\nVestibulum lectus mauris ultrices eros in cursus. Massa id neque aliquam vestibulum morbi blandit cursus. Sagittis purus sit amet volutpat consequat mauris. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Vitae sapien pellentesque habitant morbi tristique. Eget duis at tellus at. A pellentesque sit amet porttitor. Ac turpis egestas maecenas pharetra convallis posuere morbi leo. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a.\nElementum tempus egestas sed sed risus pretium. Viverra adipiscing at in tellus. Sit amet est placerat in egestas. Cursus mattis molestie a iaculis at erat pellentesque adipiscing commodo. Vitae congue eu consequat ac. Vitae sapien pellentesque habitant morbi tristique senectus et netus. Mauris ultrices eros in cursus turpis. Magna fermentum iaculis eu non diam phasellus. Aenean et tortor at risus. Viverra nibh cras pulvinar mattis nunc sed. Vulputate odio ut enim blandit volutpat maecenas volutpat. Purus non enim praesent elementum facilisis. In arcu cursus euismod quis viverra nibh. Et ultrices neque ornare aenean euismod elementum nisi quis eleifend.\n\nNisi scelerisque eu ultrices vitae auctor eu augue ut lectus. Sed arcu non odio euismod lacinia at. Tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sed augue lacus viverra vitae congue eu consequat ac felis. Tellus in metus vulputate eu scelerisque felis imperdiet proin. Sit amet massa vitae tortor condimentum lacinia quis vel. Quisque sagittis purus sit amet. Sit amet cursus sit amet dictum sit amet. Varius duis at consectetur lorem donec massa sapien. Nibh sit amet commodo nulla facilisi. Faucibus in ornare quam viverra. At varius vel pharetra vel turpis nunc eget. Id venenatis a condimentum vitae sapien pellentesque habitant. Tempor nec feugiat nisl pretium fusce id. Amet aliquam id diam maecenas ultricies mi eget. Et leo duis ut diam quam nulla. Sit amet facilisis magna etiam tempor orci eu lobortis elementum. Maecenas ultricies mi eget mauris pharetra et.\n\nSit amet volutpat consequat mauris nunc congue nisi vitae suscipit. Justo eget magna fermentum iaculis eu non. Id interdum velit laoreet id donec ultrices. Et malesuada fames ac turpis egestas sed. Eu scelerisque felis imperdiet proin fermentum leo vel. Amet porttitor eget dolor morbi. Integer quis auctor elit sed. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Cursus risus at ultrices mi tempus imperdiet nulla malesuada. Quis imperdiet massa tincidunt nunc pulvinar sapien et. Eget felis eget nunc lobortis mattis aliquam. Massa sapien faucibus et molestie ac feugiat. Ipsum consequat nisl vel pretium lectus quam id leo in. Interdum consectetur libero id faucibus nisl tincidunt eget nullam non. At varius vel pharetra vel turpis nunc eget. In aliquam sem fringilla ut morbi tincidunt. Arcu dui vivamus arcu felis bibendum ut tristique et. Gravida quis blandit turpis cursus in hac habitasse platea. Sem nulla pharetra diam sit amet nisl suscipit adipiscing bibendum.";
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:longText attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:20.f]}];
[mutableAttributedString addAttribute:NSFontAttributeName value:[UIFont italicSystemFontOfSize:20.f] range:[longText rangeOfString:@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."]];
[mutableAttributedString addAttribute:NSForegroundColorAttributeName value: UIColor.lightGrayColor range:[longText rangeOfString:@"Turpis nunc eget lorem dolor sed. Donec ac odio tempor orci dapibus ultrices in iaculis. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam."]];
[mutableAttributedString addAttribute:NSStrokeWidthAttributeName value: @(-4.0) range:[longText rangeOfString:@"Sed faucibus turpis in eu. Pellentesque sit amet porttitor eget dolor. A condimentum vitae sapien pellentesque habitant morbi tristique."]];
[mutableAttributedString addAttribute:NSStrokeWidthAttributeName value: @(1.0) range:[longText rangeOfString:@"Fermentum dui faucibus in ornare quam viverra orci. Duis ultricies lacus sed turpis tincidunt id aliquet risus."]];
NSShadow *shadow = [NSShadow new];
shadow.shadowBlurRadius = 3.f;
shadow.shadowColor = UIColor.darkGrayColor;
shadow.shadowOffset = CGSizeMake(2.f, 2.f);
[mutableAttributedString addAttribute:NSShadowAttributeName value: shadow range:[longText rangeOfString:@"Vestibulum lectus mauris ultrices eros in cursus. Massa id neque aliquam vestibulum morbi blandit cursus. Sagittis purus sit amet volutpat consequat mauris. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Vitae sapien pellentesque habitant morbi tristique. Eget duis at tellus at."]];
NSAttributedString *attributedString = [mutableAttributedString copy];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment