Skip to content

Instantly share code, notes, and snippets.

View gkhackers's full-sized avatar

Kyongjin Seo gkhackers

View GitHub Profile
@gkhackers
gkhackers / shareContact.txt
Created November 17, 2016 05:43
How to send Contact data via Share Extension
NSData *data = [CNContactVCardSerialization dataWithContacts:@[self.contact] error:nil];
NSItemProvider *provider = [[NSItemProvider alloc] initWithItem:data typeIdentifier:(NSString *)kUTTypeVCard];
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[provider] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
@gkhackers
gkhackers / String+Extension
Created March 21, 2019 03:59
When I use UITextView
extension String {
func link() -> URL? {
let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let matches = detector.matches(in: self, options: [], range: NSRange(location: 0, length: self.count))
if matches.count > 0 {
for result in matches {
if let urlString = result.url?.absoluteString {
let url = URL(string: urlString)
return url
func checkHashTags() {
let matchedString = matches(for: "[##][A-Za-zA-Za-z0-90-9가-힣ㄱ-ㅎぁ-ヶヲ-゚ー]+", in: self.text)
print(matchedString)
}
func matches(for regex: String, in text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let nsString = text as NSString
extension UITextInput {
var selectedRange: NSRange? {
guard let range = selectedTextRange else { return nil }
let location = offset(from: beginningOfDocument, to: range.start)
let length = offset(from: range.start, to: range.end)
return NSRange(location: location, length: length)
}
}
extension AVPlayerItem {
enum TrackType {
case subtitle
case audio
/**
Return valid AVMediaSelectionGroup is item is available.
*/
fileprivate func characteristic(item:AVPlayerItem) -> AVMediaSelectionGroup? {
let str: AVMediaCharacteristic = self == .subtitle ? .legible : .audible
if item.asset.availableMediaCharacteristicsWithMediaSelectionOptions.contains(str) {
@gkhackers
gkhackers / UIImageView ( Shimmering )
Created February 6, 2020 05:54
Shimmering Animation
extension UIImageView {
func start(){
guard layer.sublayers?.first(where: {$0.name == "AnimatingGradient"}) == nil else { return }
let light = UIColor(white: 1, alpha: 1).cgColor
let alpha = UIColor.lightGray.cgColor
let gradient = CAGradientLayer()
gradient.name = "AnimatingGradient"