Right:
CGSize maxSize = CGSizeMake(200.0f, CGFLOAT_MAX); CGSize requiredSize = [label sizeThatFits:maxSize]; label.frame = CGRectMake(10, 10, size.width, size.height);
Right:
CGSize maxSize = CGSizeMake(200.0f, CGFLOAT_MAX); CGSize requiredSize = [label sizeThatFits:maxSize]; label.frame = CGRectMake(10, 10, size.width, size.height);
Drop-in solution for a tintable/blendable “imageview”:
The .h file:
#import@interface UIBlendableImageView : UIView - (id)initWithImage:(UIImage*)image andTintColor:(UIColor*)tintColor; @end
The .m file:
#import "UIBlendableImageView.h" #import@implementation UIBlendableImageView - (id)initWithImage:(UIImage*)image andTintColor:(UIColor*)tintColor { self = [super initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; if (self) { UIImageView *maskImageView = [[[UIImageView alloc] initWithImage:image] autorelease]; [maskImageView setFrame:[self bounds]]; [[self layer] setMask:[maskImageView layer]]; [self setBackgroundColor:tintColor]; } return self; } @end
// convert to a data object, using a lossy conversion to ASCII NSData *asciiEncoded = [yourOriginalString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; // take the data object and recreate a string using the lossy conversion NSString *other = [[NSString alloc] initWithData:asciiEncoded encoding:NSASCIIStringEncoding]; // relinquish ownership [other autorelease];
5.1 and up
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; }
5.0.1
#import- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); return result == 0; }
This is a drop-in replacement for Apples Reachability class. It is ARC compatible, uses the new GCD methods to notify of network interface changes.
In addition to the standard NSNotification it supports the use of Blocks for when the network becomes reachable and unreachable.
Finally you can specify wether or not a WWAN connection is considered “reachable”.
void runOnMainQueueWithoutDeadlocking(void (^block)(void)) { if ([NSThread isMainThread]) { block(); } else { dispatch_sync(dispatch_get_main_queue(), block); } }
In many cases if the iOS device international settings is not set to US, you may have errors parsing text-based dates from e.g. RSS feeds.
The solution is to set the NSDateFormatter locale to en_US_POSIX
.
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; [dateFormatter setLocale:locale]; [locale release];
by Luke Redpath on Stackoverflow.com
If you wish to easily report status of background processes to the user, on Android you may use Toast class, however iOS lacks of this great feature. But there is a great library, that provides even more features than Android version: MBProgressHUD.
If you want to add your app’s settings to the main iOS settings page, there are some pretty easy and straightforward steps to do it, which is presented very well in the following tutorial.
Sometimes if you wish to encode a whole URL including /,&,: , [NSString stringByAddingPercentEscapes:]
fails, to solve this issue, use CFURLCreateStringByAddingPercentEscapes
+ (NSString*)urlEncode: (NSString*) url { NSString* encoded = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)url, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8); return [encoded autorelease]; }