Here is a simple way to put double quotes in your NSString
NSString *myString = @"I say \"Hello!\"";
The output will be
I say "Hello!"
Learn Tips & Tricks Of Programming,Learn iPhone/iPod Programming,Learn Objective-c,Get Usefull MAC Applications
Flipkart Search
Search This Blog
Thursday, July 29, 2010
Put double quotes in NSString
Thursday, July 8, 2010
Generate Random Color
Here is a simple method to generate a random color :-
just put this method in any class you want and put the definition in the header file
in .h file
+ (UIColor *) randomColor;
in .m file
+ (UIColor *) randomColor {
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
get random color by calling this method like this....
//Class Name is the class where you have put the method
UIColor *randColor = [ClassName randomColor];
just put this method in any class you want and put the definition in the header file
in .h file
+ (UIColor *) randomColor;
in .m file
+ (UIColor *) randomColor {
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
get random color by calling this method like this....
//Class Name is the class where you have put the method
UIColor *randColor = [ClassName randomColor];
Labels:
IPHONE,
Objective-C,
UIColor,
XCode
UIKeyboardBoundsUserInfoKey is deprecated, what to use instead?
From the documentation for
UIKeyboardBoundsUserInfoKey:The key for an NSValue object containing a CGRect that identifies the bounds rectangle of the keyboard in window coordinates. This value is sufficient for obtaining the size of the keyboard. If you want to get the origin of the keyboard on the screen (before or after animation) use the values obtained from the user info dictionary through the UIKeyboardCenterBeginUserInfoKey or UIKeyboardCenterEndUserInfoKey constants. Use the UIKeyboardFrameBeginUserInfoKey or UIKeyboardFrameEndUserInfoKey key instead.Apple recommends implementing a convenience routine such as this (which could be implemented as a category addition to
UIScreen):+ (CGRect) convertRect:(CGRect)rect toView:(UIView *)view {
UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *) view : [view window];
return [view convertRect:[window convertRect:rect fromWindow:nil] fromView:nil];
} to recover
window-adjusted keyboard frame size properties.I took a different approach, which involves checking the device
orientation:
CGRect _keyboardEndFrame;
[[notification.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&_keyboardEndFrame];
CGFloat _keyboardHeight;
if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) {
_keyboardHeight = _keyboardEndFrame.size.height;
}
else {
_keyboardHeight = _keyboardEndFrame.size.width;
}
Thanks to Alex Reynolds for the answer
Tuesday, July 6, 2010
Opting Out of Background Execution in iPhone OS 4.0
If you do not want your application to remain in the background when it is quit, you can explicitly opt out of the background execution model by adding the
Opting out of background execution may be preferable for certain types of applications. Specifically, if coding for the background may require adding significant complexity to your application, terminating the application may be a simpler solution. Also, if your application consumes a large amount of memory, the system might need to terminate your application quickly anyway to make room for other applications. Thus, opting to terminate, instead of switch to the background, might yield the same results and save you development time and effort.
UIApplicationExitsOnSuspend key to your application’s Info.plist file and setting its value to YES. When an application opts out, it cycles between the not running, inactive, and active states and never enters the background or suspended states. When the user taps the Home button to quit the application, the applicationWillTerminate: method of the application delegate is called and the application has approximately five seconds to clean up and exit before it is terminated and moved back to the not running state.Opting out of background execution may be preferable for certain types of applications. Specifically, if coding for the background may require adding significant complexity to your application, terminating the application may be a simpler solution. Also, if your application consumes a large amount of memory, the system might need to terminate your application quickly anyway to make room for other applications. Thus, opting to terminate, instead of switch to the background, might yield the same results and save you development time and effort.
Tuesday, June 22, 2010
Customize the default UISlider in iPhone
here is a simple way to customize the UISlider images
UIImage *stetchLeftTrack = [[UIImage imageNamed:@"left-slide.png"]
stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
UIImage *stetchRightTrack = [[UIImage imageNamed:@"right-slide.png"]
stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
[sldDistanceFilter setThumbImage: [UIImage imageNamed:@"slider_ball.png"] forState:UIControlStateNormal];
[sldDistanceFilter setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[sldDistanceFilter setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
You just need to replace the image names according to your suite.
Wednesday, May 12, 2010
Limit Characters in UITextField
Here is a simple delegate method to limit the characters in UITextfield :-
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 8) ? NO : YES;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 8) ? NO : YES;
}
Saturday, April 17, 2010
Difference b/w NSArray and NSMutableArray
NSMutableArray (and all other classes with Mutablein the name) can be modified. So, if you create a plain
NSArray,you cannot change its contents later (without recreating it). But if
you create an
NSMutableArray, you can change it.Friday, April 16, 2010
Difference between signed and unsigend data types
Signed Data Type - a signed data type is one that can hold both positive or negative values, i.e. -1 or +456. A 32 bit signed integer can hold the range -2147483648 to 2147483647
Unsigned Data Type - Unsigned data types can only hold positive values.
An unsigned 32 bit integer for instance can hold the range 0 to 4294967296
Unsigned Data Type - Unsigned data types can only hold positive values.
An unsigned 32 bit integer for instance can hold the range 0 to 4294967296
Tuesday, April 13, 2010
The most annoying Xcode error ever: The Info.plist for application at (null) specifies a CFBundleExecutable of (null), which does not exist.
If you're developing an iPhone application in XCode and getting the
error:
how to fix it:
In Xcode, choose "Executables" from the project
hierarchy. Click your project executable then press Command-I. Choose
the General tab and set the working directory to "Build Products
directory".
This fixed the problem. The advisory from Apple did
not help much, but did mention the Build Products directory. Under SDK
release notes for iPhone OS 3.1, XCode/Developer Tools:
this saves you a little time. It frustrated me for a while.
error:
“The Info.plist for application at (null)here's
specifies a CFBundleExecutable of (null), which does not exist.”
how to fix it:
In Xcode, choose "Executables" from the project
hierarchy. Click your project executable then press Command-I. Choose
the General tab and set the working directory to "Build Products
directory".
This fixed the problem. The advisory from Apple did
not help much, but did mention the Build Products directory. Under SDK
release notes for iPhone OS 3.1, XCode/Developer Tools:
"ChangingHope
an iPhone Executable's working directory from “Build Products
directory” may cause the application not to install properly with the
error message “The Info.plist for application at (null) specifies a
CFBundleExecutable of (null), which does not exist.”"
this saves you a little time. It frustrated me for a while.
Thursday, April 8, 2010
Get list of all available fonts with family names in iPhone
Here is the piece of code to get list of all available fonts in your iPhone. This will print the list in gdb
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily){
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:
[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont){
NSLog(@"Font name: %@", [fontNames objectAtIndex:indFont]);
}
[fontNames release];
}
[familyNames release];
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily){
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:
[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont){
NSLog(@"Font name: %@", [fontNames objectAtIndex:indFont]);
}
[fontNames release];
}
[familyNames release];
Subscribe to:
Posts (Atom)