iPhone IOS绕过UITextView的角落

[descriptionTV.layer setCornerRadius:5];
descriptionTV.clipsToBounds = YES;

iPhone 像素完美的碰撞检测

//1) Load the image:
UIImage *collisionImage = [UIImage imageNamed:@"levelmask.png"];

//2) Get the image size:
int width = (int)collisionImage.size.width;
int height = (int)collisionImage.size.height;

//3) Allocate our array for quick lookups and clear it:
unsigned char *collisionMap = (unsigned char *)malloc( width *
height );
memset( collisionMap, 0, width * height );

//4) Get access to the raw bits of the image
CFDataRef imageData = CGDataProviderCopyData( CGImageGetDataProvider
( collisionImage.CGImage ) );
const UInt32 *pixels = (const UInt32*)CFDataGetBytePtr( imageData );

//5) Build our collision map:
for( j = 0; j < (width * height); j++ )
   if ( pixels[j] & 0xff000000 ) collisionMap[j] |= 1;

//6) Release what we no longer need:
CFRelease( imageData );

//Now, whenever you need to see if you hit something, you call a routine
//that does:
-(int)collisionForPoint:(CGPoint)point
{
        int x = (int)point.x;
        int y = (int)point.y;

        // TODO: check for boundaries here

        return collisionMap[(y*width)+x];

}

iPhone 检索所有播放列表iOS SDK

MPMediaQuery *query = [MPMediaQuery playlistsQuery]; 
NSArray *playlists = [query collections];
for(int i = 0; i < [playlists count]; i++) {
NSLog(@"%@", [[playlists objectAtIndex:i] valueForProperty: MPMediaPlaylistPropertyName]);
}

iPhone 新的iOS 5 API:使用EASY功能自定义UINavigationBar背景属性!

- (void)customizeAppearance
{
    // Create resizable images
    UIImage *gradientImage44 = [[UIImage imageNamed:@"gradient_textured_44"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
    UIImage *gradientImage32 = [[UIImage imageNamed:@"gradient_textured_32"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
 
    // Set the background image for *all* UINavigationBars
    [[UINavigationBar appearance] setBackgroundImage:gradientImage44 
        forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBackgroundImage:gradientImage32 
        forBarMetrics:UIBarMetricsLandscapePhone];
 
    // Customize the title text for *all* UINavigationBars
    [[UINavigationBar appearance] setTitleTextAttributes:
        [NSDictionary dictionaryWithObjectsAndKeys:
            [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0], 
            UITextAttributeTextColor, 
            [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], 
            UITextAttributeTextShadowColor, 
            [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], 
            UITextAttributeTextShadowOffset, 
            [UIFont fontWithName:@"Arial-Bold" size:0.0], 
            UITextAttributeFont, 
            nil]];
 
}

iPhone 在iPhone中使用Retro Avatar API

NSString *name = [NSString stringWithFormat:@"http://retroavatar.appspot.com/api?name=%d&alpha=true&fact=2", uid];
NSURL *url = [NSURL URLWithString:name];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [UIImage imageWithData:data];
((UIImageView *) [self.view viewWithTag:1]).image = img;

iPhone 检索iPod中正在播放的媒体项目的信息

// instantiate a music player
MPMusicPlayerController *iPodMediaPlayer;
iPodMediaPlayer = [MPMusicPlayerController iPodMusicPlayer];

// Check if it is now playing
if([iPodMediaPlayer nowPlayingItem]){
    NSLog(@"iPod is playing");
		
    // Get the now playing item
    MPMediaItem *nowPlayingMediaItem = [iPodMediaPlayer nowPlayingItem];	

    // Get info of the item
    NSString *itemTitle = [nowPlayingMediaItem valueForProperty: MPMediaItemPropertyTitle];
    NSString *itemArtist = [nowPlayingMediaItem valueForProperty: MPMediaItemPropertyArtist];

    NSLog([[NSString alloc] initWithFormat:@"playing: %@ by %@", itemTitle, itemArtist]);
		
		
    } else {
	NSLog(@"iPod is not plaing");
    }

iPhone UIImage到NSData

PNG格式的图片: 
UIImage *image.....;   
NSData *imageData = UIImagePNGRepresentation(image,1.0);  

JEPG格式的图片: 
UIImage *image.....;   
NSData *imageData = UIImageJEPGRepresentation(image);

iPhone iphoneå¼€å??“ - SQLiteæ•°æ??®åº‘使璨

我现在要使用SQLite3.0创建一个数据库,然后在数据库中创建一个表格。

首先要引入SQLite3.0的lib库。然后包含头文件#import <sqlite3.h>

【1】打开数据库,如果没有,那么创建一个

sqlite3* database_;

-(BOOL) open{
       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL find = [fileManager fileExistsAtPath:path];

    // 找到数据库文件mydb.sql
    if (find) {
        NSLog(@"Database file have already existed.");
        if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {
            sqlite3_close(database_);
            NSLog(@"Error: open database file.");
            return NO;
        }
        return YES;
    }
    if(sqlite3_open([path UTF8String], &database_) == SQLITE_OK) {
        bFirstCreate_ = YES;
        [self createChannelsTable:database_];//在后面实现函数createChannelsTable

        return YES;
    } else {
        sqlite3_close(database_);
        NSLog(@"Error: open database file.");
        return NO;
    }
    return NO;
}

【2】创建表格

//创建表格,假设有五个字段,(id,cid,title,imageData ,imageLen )

//说明一下,id为表格的主键,必须有。

//cid, 和title都是字符串,imageData是二进制数据,imageLen 是该二进制数据的长度。
- (BOOL) createChannelsTable:(sqlite3*)db{
    char *sql = "CREATE TABLE channels (id integer primary key, \
                                        cid text, \
                                        title text, \
                                        imageData BLOB, \
                                        imageLen integer)";
    sqlite3_stmt *statement;
    if(sqlite3_prepare_v2(db, sql, -1, &statement, nil) != SQLITE_OK) {
        NSLog(@"Error: failed to prepare statement:create channels table");
        return NO;
    }
    int success = sqlite3_step(statement);
    sqlite3_finalize(statement);
    if ( success != SQLITE_DONE) {
        NSLog(@"Error: failed to dehydrate:CREATE TABLE channels");
        return NO;
    }
    NSLog(@"Create table 'channels' successed.");
    return YES;
}

 

【3】向表格中插入一条记录

假设channle是一个数据结构体,保存了一条记录的内容。

- (BOOL) insertOneChannel:(Channel*)channel{
    NSData* ImageData = UIImagePNGRepresentation( channel.image_);
    NSInteger Imagelen = [ImageData length];
    sqlite3_stmt *statement;
    static char *sql = "INSERT INTO channels (cid,title,imageData,imageLen)\
                        VALUES(?,?,?,?)";

    //问号的个数要和(cid,title,imageData,imageLen)里面字段的个数匹配,代表未知的值,将在下面将值和字段关联。
    int success = sqlite3_prepare_v2(database_, sql, -1, &statement, NULL);
    if (success != SQLITE_OK) {
        NSLog(@"Error: failed to insert:channels");
        return NO;
    }
   

   //这里的数字1,2,3,4代表第几个问号
    sqlite3_bind_text(statement, 1, [channel.id_ UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(statement, 2, [channel.title_ UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_blob(statement, 3, [ImageData bytes], Imagelen, SQLITE_TRANSIENT);
    sqlite3_bind_int(statement, 4, Imagelen);    


    success = sqlite3_step(statement);
    sqlite3_finalize(statement);
   
    if (success == SQLITE_ERROR) {
        NSLog(@"Error: failed to insert into the database with message.");
        return NO;
    }
 
  NSLog(@"Insert One Channel#############:id = %@",channel.id_);
    return YES;
}

 

【4】数据库查询

这里获取表格中所有的记录,放到数组fChannels中。

- (void) getChannels:(NSMutableArray*)fChannels{
    sqlite3_stmt *statement = nil;
    char *sql = "SELECT * FROM channels";
    if (sqlite3_prepare_v2(database_, sql, -1, &statement, NULL) != SQLITE_OK) {
        NSLog(@"Error: failed to prepare statement with message:get channels.");
    }
    //查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值。
    while (sqlite3_step(statement) == SQLITE_ROW) {
        char* cid       = (char*)sqlite3_column_text(statement, 1);
        char* title     = (char*)sqlite3_column_text(statement, 2);
        Byte* imageData = (Byte*)sqlite3_column_blob(statement, 3);
        int imageLen    = sqlite3_column_int(statement, 4);        
        Channel* channel = [[Channel alloc] init];
        if(cid)
            channel.id_ = [NSString stringWithUTF8String:cid];
        if(title)
            channel.title_ = [NSString stringWithUTF8String:title];
        if(imageData){
            UIImage* image = [UIImage imageWithData:[NSData dataWithBytes:imageData length:imageLen]];
            channel.image_ = image;
        }
         [fChannels addObject:channel];
        [channel release];
    }
    sqlite3_finalize(statement);
}

 

就简单说这些吧。

iPhone Textview输入位于键盘后面

.h file:
@interface MyTextViewViewController : UIViewController <UITextViewDelegate>
{
	UITextView *m_textView;
	UIBarButtonItem *doneBarButtonItem;
}

@property(nonatomic,retain) IBOutlet UITextView *m_textView;
@property(nonatomic,retain) IBOutlet UIBarButtonItem *doneBarButtonItem;

- (IBAction)saveAction:(id)sender;

----------------------------
.m file:
...
- (void)viewWillAppear:(BOOL)animated 
{
    // listen for keyboard hide/show notifications so we can properly adjust the table's height
    [super viewWillAppear:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)viewDidDisappear:(BOOL)animated 
{
    [super viewDidDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

- (void)keyboardWillShow:(NSNotification *)aNotification 
{
   // the keyboard is showing so resize the table's height
   CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
    NSTimeInterval animationDuration = [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    CGRect frame = self.view.frame;
    frame.size.height -= keyboardRect.size.height;
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    [UIView setAnimationDuration:animationDuration];
    self.view.frame = frame;
    [UIView commitAnimations];
}

- (void)keyboardWillHide:(NSNotification *)aNotification
{
    // the keyboard is hiding reset the table's height
    CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
    NSTimeInterval animationDuration = [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    CGRect frame = self.view.frame;
    frame.size.height += keyboardRect.size.height;
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    [UIView setAnimationDuration:animationDuration];
    self.view.frame = frame;
    [UIView commitAnimations];
}


#pragma mark -
#pragma mark UITextViewDelegate
- (void)textViewDidBeginEditing:(UITextView *)textView
{
	doneBarButtonItem.enabled = YES;
}

- (IBAction)saveAction:(id)sender
{
	doneBarButtonItem.enabled = NO;
	[self.m_textView resignFirstResponder];
}

iPhone NSDictionary填充到表视图

.h file:

@interface ResultsViewController : UITableViewController 
{
	NSMutableArray *m_list;
	NSDictionary *localDict;
}

@property(nonatomic,retain) NSMutableArray *m_list;

@end

========================
.m file:


- (void)viewDidLoad {
    [super viewDidLoad];
	
	NSDictionary *tempDict;
	AdInfo *shAdInfo =  [AdInfo sharedAdInfo];
	tempDict = shAdInfo.adInfoDict;
	int nCountDict = [tempDict count];
	NSLog(@"nCountDict: %d", nCountDict);
	////////////////////////
	NSMutableArray *myMutableArr = [[NSMutableArray alloc] init];
	int ctr;	
	
	for(ctr = 1; ctr <= nCountDict; ctr++)
	{
		localDict = [tempDict objectForKey:[NSString stringWithFormat:@"%d", ctr]];
		[myMutableArr addObject:localDict];
	}
	
	self.m_list = myMutableArr;
	[myMutableArr release];
	
	NSLog(@"m_list count: %d", [m_list count]);
}
.....

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
	NSUInteger row = [indexPath row];		
	NSDictionary *newDict = [NSDictionary dictionaryWithDictionary:[m_list objectAtIndex:row]];
	//NSLog(@"newDict desc: %@", [newDict description]);
	NSString *rowString = [newDict objectForKey:@"text"];
	cell.textLabel.text = rowString;	
	[rowString release];
	
    return cell;
}