Friday 22 August 2014

Marquee Label & AttributedString - Sample code

Download or copy the Two Files. Added code into your project.

MarqueeLabel.h

MarqueeLabel.m

Download Sample Code 

.m File
#import "MarqueeLabel.h"

@interface ViewController ()
{
    MarqueeLabel  *marquee_lbl;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

marquee_lbl = [[MarqueeLabel alloc]init];

NSString *newStr = @“Good for Health”;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:newStr];
    [attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@“Helvetica” size:11.0f] range:NSMakeRange(0, 3)];
    [attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica" size:14.0f] range:NSMakeRange(4, newStr.length-4)];
    marquee_lbl.attributedText = attributedString;

if ([marquee_lbl.text length] > 30)
            {
                marquee_lbl.marqueeType = MLContinuous;
                marquee_lbl.scrollDuration = 10.0;
                marquee_lbl.animationCurve = UIViewAnimationOptionCurveEaseInOut;
                marquee_lbl.fadeLength = 5.0f;
                marquee_lbl.continuousMarqueeExtraBuffer = 200.0f;
                marquee_lbl.tag = 102;
            }

}

iPhone PopOverController - Sample Code for iPhone

Download or copy the Two Files. Added code into your project.





.m File:
#import "WYPopoverController.h"

@interface ViewController ()<WYPopoverControllerDelegate>
{
    WYPopoverController *settingsPopoverController;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

-(IBAction) info_Action:(id) sender
{
    UIButton *btn = (UIButton *) sender;
if (settingsPopoverController == nil)
   {
        settingsPopoverController = [[WYPopoverController alloc] initWithContentViewController:product_info]; //View Controller Name : product_info
    settingsPopoverController.delegate = self;
settingsPopoverController.popoverContentSize = CGSizeMake(291, 205); //Size for Pop Over
    settingsPopoverController.passthroughViews = @[btn];
    settingsPopoverController.popoverLayoutMargins = UIEdgeInsetsMake(10, 10, 10, 10);
    settingsPopoverController.wantsDefaultContentAppearance = NO;
    [settingsPopoverController beginThemeUpdates];
    settingsPopoverController.theme.arrowHeight = 7;
    settingsPopoverController.theme.arrowBase = 15;
    [settingsPopoverController endThemeUpdates];
    [settingsPopoverController presentPopoverFromRect:btn.bounds
                                               inView:btn
                             permittedArrowDirections:WYPopoverArrowDirectionAny
                                             animated:YES
                                              options:WYPopoverAnimationOptionFadeWithScale];
}
else
{
         [settingsPopoverController dismissPopoverAnimated:YES];
        settingsPopoverController.delegate = nil;
         settingsPopoverController = nil;
}
}

- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)controller
{
    return YES;
}

- (void)popoverControllerDidDismissPopover:(WYPopoverController *)controller
{
    if (controller == settingsPopoverController)
    {
        settingsPopoverController.delegate = nil;
        settingsPopoverController = nil;
    }
}

Delegate - Sample Code for iPhone

Let's assume an object A calls object B to perform an action, once the action is complete object A should know that B has completed the task and take necessary action. This is achieved with the help of delegates.
The key concepts in the above example are,
  • A is delegate object of B
  • B will have a reference of A
  • A will implement the delegate methods of B.
  • B will notify A through the delegate methods.

Steps in creating a delegate

1. First, create a single view application.

2. Then select File -> New -> File...



3. Then select Objective C Class and click Next.

4. Give the name for the class say SampleProtocol with subclass as NSObject as shown below.




5. Then select create.

6. Add a protocol to the SampleProtocol.h file and updated code is as follows.
#import <Foundation/Foundation.h>
// Protocol definition starts here 
@protocol SampleProtocolDelegate <NSObject>
@required
- (void) processCompleted;
@end
// Protocol Definition ends here
@interface SampleProtocol : NSObject
{
   // Delegate to respond back
   id <SampleProtocolDelegate> _delegate; 

}
@property (nonatomic,strong) id delegate;

-(void)startSampleProcess; // Instance method

@end

7. Implement the instance method by updating the SampleProtocol.m file as shown below.
#import "SampleProtocol.h"

@implementation SampleProtocol

-(void)startSampleProcess{
    
    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate 
        selector:@selector(processCompleted) userInfo:nil repeats:NO];
}
@end

8. Add an UILabel in the ViewController.xib by dragging the label from the object library to UIView as shown below.

9. Create an IBOutlet for the label and name it as myLabel and update the code as follow to adopt SampleProtocolDelegate in ViewController.h
#import <UIKit/UIKit.h>
#import "SampleProtocol.h"

@interface ViewController : UIViewController<SampleProtocolDelegate>
{
    IBOutlet UILabel *myLabel;
}
@end

10. Implement the delegate method, create object for SampleProtocol and call the startSampleProcess method. The Updated ViewController.m file is as follows.
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    SampleProtocol *sampleProtocol = [[SampleProtocol alloc]init];
    sampleProtocol.delegate = self;
    [myLabel setText:@"Processing..."];
    [sampleProtocol startSampleProcess];
        // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Sample protocol delegate
-(void)processCompleted{    
    [myLabel setText:@"Process Completed"];
}

@end

11. We will see an output as follows, initially the label will be processing which gets updated once the delegate method is called by the SampleProtocol object.



Category - Sample Code for iPhone

1. Create a File for Objective - C Category and Click the Next Button

2. Type a Name for Category and Select the Category on NSString and Click the Create Button.

3. The File is created as Category Type. The File Name like as NSString+Name

4. Write the Below Codes

NSString+Name.h File
#import <Foundation/Foundation.h>

@interface NSString (Validate)

-(NSString *)checkthestring:(NSString *)string_value;

-(NSString *)checkanotherstring:(NSString *)str_value;

-(NSString *)nullcheck:(NSString *)string_null_value;

-(int)getLength:(NSString*)string_length;

@end


NSString+Name.m File
#import "NSString+Validate.h"

@implementation NSString (Validate)

-(NSString *)checkthestring:(NSString *)string_value
{

// Special Characters
    string_value = [string_value stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n\r"];

    string_value = [string_value stringByReplacingOccurrencesOfString:@"\\r" withString:@"\n\r"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&ldquo;" withString:@"'"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&rdquo;" withString:@"'"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&nbsp;" withString:@""];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&laquo;" withString:@"<<"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&raquo;" withString:@">>"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&quot;" withString:@"\""];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&apos;" withString:@"'"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&amp;" withString:@"&"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"];
    string_value = [string_value stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"];
    
    // ISO 8859-1 Symbols
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&iexcl;" withString:@"¡"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&cent;" withString:@"¢"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&pound;" withString:@"£"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&curren;" withString:@"¤"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&yen;" withString:@"¥"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&brvbar;" withString:@"¦"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&sect;" withString:@"§"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&uml;" withString:@"¨"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Atilde;&copy;" withString:@"é"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ordf;" withString:@"ª"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&laquo;" withString:@"«"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&not;" withString:@"¬"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&shy;" withString:@"    "];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&reg;" withString:@"®"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&macr;" withString:@"¯"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&deg;" withString:@"°"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&plusmn;" withString:@"±"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&sup2;" withString:@"²"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&sup3;" withString:@"³"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&acute;" withString:@"´"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&micro;" withString:@"µ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&para;" withString:@"¶"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&middot;" withString:@"·"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&cedil;" withString:@"¸"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&sup1;" withString:@"¹"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ordm;" withString:@"º"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&raquo;" withString:@"»"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&frac14;" withString:@"¼"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&frac12;" withString:@"½"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&frac34;" withString:@"¾"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&iquest;" withString:@"¿"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&times;" withString:@"×"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&divide;" withString:@"÷"];
    
    // ISO 8859-1 Characters
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Agrave;" withString:@"À"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Aacute;" withString:@"Á"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Acirc;" withString:@"Â"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Atilde;" withString:@"Ã"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Auml;" withString:@"Ä"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Aring;" withString:@"Å"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&AElig;" withString:@"Æ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ccedil;" withString:@"Ç"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Egrave;" withString:@"È"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Eacute;" withString:@"É"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ecirc;" withString:@"Ê"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Euml;" withString:@"Ë"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Igrave;" withString:@"Ì"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Iacute;" withString:@"Í"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Icirc;" withString:@"Î"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Iuml;" withString:@"Ï"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ETH;" withString:@"Ð"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ntilde;" withString:@"Ñ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ograve;" withString:@"Ò"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Oacute;" withString:@"Ó"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ocirc;" withString:@"Ô"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Otilde;" withString:@"Õ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ouml;" withString:@"Ö"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Oslash;" withString:@"Ø"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ugrave;" withString:@"Ù"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Uacute;" withString:@"Ú"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Ucirc;" withString:@"Û"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Uuml;" withString:@"Ü"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&Yacute;" withString:@"Ý"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&THORN;" withString:@"Þ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&szlig;" withString:@"ß"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&agrave;" withString:@"à"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&aacute;" withString:@"á"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&acirc;" withString:@"â"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&atilde;" withString:@"ã"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&auml;" withString:@"ä"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&aring;" withString:@"å"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&aelig;" withString:@"æ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ccedil;" withString:@"ç"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&egrave;" withString:@"è"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&eacute;" withString:@"é"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ecirc;" withString:@"ê"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&euml;" withString:@"ë"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&igrave;" withString:@"ì"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&iacute;" withString:@"í"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&icirc;" withString:@"î"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&iuml;" withString:@"ï"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&eth;" withString:@"ð"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ntilde;" withString:@"ñ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ograve;" withString:@"ò"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&oacute;" withString:@"ó"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ocirc;" withString:@"ô"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&otilde;" withString:@"õ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ouml;" withString:@"ö"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&oslash;" withString:@"ø"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ugrave;" withString:@"ù"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&uacute;" withString:@"ú"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&ucirc;" withString:@"û"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&uuml;" withString:@"ü"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&yacute;" withString:@"ý"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&thorn;" withString:@"þ"];
    string_value =  [string_value stringByReplacingOccurrencesOfString:@"&yuml;" withString:@"ÿ"];
    
    return string_value;
}

-(NSString *)checkanotherstring:(NSString *)str_value
{
    str_value = [str_value stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n\r"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"\\r" withString:@"\n\r"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&ldquo;" withString:@"'"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&rdquo;" withString:@"'"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&nbsp;" withString:@""];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&laquo;" withString:@"<<"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&raquo;" withString:@">>"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&quot;" withString:@"\""];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&apos;" withString:@"'"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&amp;" withString:@"&"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"];
    str_value = [str_value stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"];
    
    return str_value;
}

-(NSString *)nullcheck:(NSString *)string_null_value
{
    if ( [string_null_value isEqualToString:@""] || string_null_value.length == 0 || [string_null_value isEqualToString:@"<null>"] || string_null_value == NULL)
    {
        NSLog(@"Value is Empty");
        string_null_value = @"Value is Empty";
    }
    
    NSLog(@"%@", string_null_value);
    
    return string_null_value;
}

-(int)getLength:(NSString*)string_length
{
    int length = string_length.length;
    return length;
}
@end


//** The code has been placed some other .m file **//

SomeFile.m

-(void)replaceSpecialCharacters
{

int Country;

NSString  *Replace_String = @"";
sqlite3_stmt * Replace_String_pdt_statement;

// Country for code: India-8 Europe-4 (English Language)
// It’s No Need to Encode Strings.
if ( Country == 4 || Country == 8 )
            {
                // Without Encode the String - Used for Special Characters, ISO 8859-1 Symbols & ISO 8859-1 Characters
Replace_String = [NSString stringWithFormat:@"%s", sqlite3_column_text(Replace_String_pdt_statement, 1)];
                NSLog(@"%@", Replace_String);
                
                Replace_String = [Replace_String checkthestring:Replace_String];
            }

// Country for code: Other are Chinese, Korean & Japanese.
// It’s Supported only Encode Strings.
            else
            {
                // With Encode the Characters - Used for Only Special Characters
    Replace_String = [NSString stringWithCString:(char *)sqlite3_column_text(Replace_String_pdt_statement, 1) encoding:NSUTF8StringEncoding];
                NSLog(@"%@", Replace_String);
                
                Replace_String = [Replace_String checkanotherstring:Replace_String];
                
                int length = [Replace_String getLength:Replace_String];
                NSLog(@"%d", length);
            }

}

Protocol - Sample Code for iPhone

1. Create a File for Objective - C Protocol and Click the Next Button

2. And Type the File Name as "Main_Control” and Click the Create Button

3. Write the Below Codes
     Main_Control.h
     #import <Foundation/Foundation.h>

     @protocol Main_Control <NSObject>

     #define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0]
     #define URLSTRING @"http://www.asanhussain.blogspot.in"

    @end

4. Where u want URLSTRING & RGB(r, g, b) - First thing you have added a header file & Use the Defined values

Button States - Normal, Selected, Highlighted

- (void)viewDidLoad
{
    [super viewDidLoad];

[btn_menuicon setBackgroundImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
    [btn_menuicon setBackgroundImage:[UIImage imageNamed:@"selected_icon.png"] forState:UIControlStateHighlighted];
    [btn_menuicon setBackgroundImage:[UIImage imageNamed:@"selected_icon.png"] forState:UIControlStateSelected];
    [btn_menuicon setSelected:NO];
}

-(IBAction)menu_Action:(id)sender
{
    if(btn_menuicon.selected == NO)
    {
[btn_menuicon setSelected:YES];
}
else
    {
[btn_menuicon setSelected:NO];
}
}

Hide the Status Bar in iPhone (iOS 7)

- (BOOL)prefersStatusBarHidden
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        return YES;
    else
        return NO;
}

Single Class to Handle Multiple Xib’s - iPhone & iPad

-(NSString *)nibName
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        return [NSString  stringWithFormat:@"%@_iPhone", NSStringFromClass([self class])];
    else
        return NSStringFromClass([self class]);
}