Wednesday, 7 May 2014

Sharing Data using UIPasteboard in iOS app

Sharing using General pasteboard

UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
appPasteBoard.persistent = YES;
[appPasteBoard setString: @"String To Copy"];

UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
NSString *textCopied = [appPasteBoard string];


Sharing using User pasteboard

UIPasteboard *userPasteBoard =[UIPasteboard pasteboardWithName:@"UserDefined" create:YES];
userPasteBoard.persistent=YES;
[userPasteBoard setString:@"String To Copy"];

UIPasteboard *userPasteBoard =[UIPasteboard pasteboardWithName:@"UserDefined" create:YES];
userPasteBoard.persistent=YES;
NSString *textCopied=[userPasteBoard string];

Copy Image to General Pasteboard

UIImage * image=[UIImage imageWithContentsOfFile:@"FILE_PATH"];
UIPasteboard * pasteboard=[UIPasteboard generalPasteboard];
[pasteboard setImage:image];

Tuesday, 6 May 2014

Fetching title, description and keywords from site loaded in UiWebview

NSString *description = [weview stringByEvaluatingJavaScriptFromString:@"(function(){ var meta=document.getElementsByTagName('meta');for (var i=0; i<meta.length; i++) {if (meta[i].name.toLowerCase()=='description') {return meta[i].content;}}; })();"];

NSString *keywords = [weview stringByEvaluatingJavaScriptFromString:@"(function(){ var meta=document.getElementsByTagName('meta');for (var i=0; i<meta.length; i++) {if (meta[i].name.toLowerCase()=='keywords') {return meta[i].content;}}; })();"];

NSLog(@"\n title= %@  \n description= %@ \n keywords= %@" ,[weview stringByEvaluatingJavaScriptFromString:@"document.title"],description,keywords);

FavIcon from UIWeview

NSString *favIcon = [NSString stringWithFormat:@"http://www.google.com/s2/favicons?domain=%@",weview.request.URL.absoluteString];

Wednesday, 30 April 2014

Creating file in NSTemporary​Directory

NSString *fileName = @"sample.txt";
NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
NSString *contentsOfFile = @"Sample text.";
NSData *data =  [contentsOfFile dataUsingEncoding:NSUTF8StringEncoding];
[data writeToFile:path atomically:YES];

Tuesday, 29 April 2014

Change the Selection Color of Cell

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor cyanColor];
cell.selectedBackgroundView = bgColorView;
cell.textLabel.highlightedTextColor = [UIColor grayColor];

Fetch Contacts (Address Book)

-(void)getAllContacts
{

    CFErrorRef *error = nil;
    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);

    __block BOOL accessGranted = NO;
    if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
        dispatch_semaphore_t sema = dispatch_semaphore_create(0);
        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
            accessGranted = granted;
            dispatch_semaphore_signal(sema);
        });
        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

    }
    else { // we're on iOS 5 or older
        accessGranted = YES;
    }

    if (accessGranted) {


        NSLog(@"Fetching contact info ----> ");

        ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
        ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
        CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
        CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

        for (int i = 0; i < nPeople; i++)
        {

            ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);

            //get First Name and Last Name

            NSString *firstName =(__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);

            NSString *lastName = (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);

            NSLog(@"First name = %@ Last name = %@",firstName,lastName);

           //get Phone Numbers;

            ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
            for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);i++) {

                CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
                NSString *phoneNumber = (__bridge NSString *) phoneNumberRef;

                NSLog(@"Phone number = %@",phoneNumber);
            }

            // get contacts picture, if pic doesn't exists, show standart one

            NSData  *imgData = (__bridge NSData *)ABPersonCopyImageData(person);

            NSLog(@"Image data= %@",imgData);


            //get Contact email

            ABMultiValueRef multiEmails = ABRecordCopyValue(person, kABPersonEmailProperty);

            for (CFIndex i=0; i<ABMultiValueGetCount(multiEmails); i++) {
                CFStringRef contactEmailRef = ABMultiValueCopyValueAtIndex(multiEmails, i);
                NSString *contactEmail = (__bridge NSString *)contactEmailRef;

                 NSLog(@"emails =%@", contactEmail);

            }

        }


    } else {

        NSLog(@"Cannot fetch Contacts :( ");


    }

}

Thursday, 24 April 2014

Save and Load UIImage in Documents Directory

- (void)saveImage: (UIImage*)image
{
if (image != nil)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: @"test.png"] ];
NSData* data = UIImagePNGRepresentation(image);
[data writeToFile:path atomically:YES];
}
}
- (UIImage*)loadImage
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithString: @"test.png"] ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
return image;
}