發表文章

目前顯示的是 5月, 2012的文章

c# 學習筆記 - 將英文字串中,每個單字第一個字母變大寫

將一串英文字,每個單字第一個字母轉換成大寫 using System; using System.Collections.Generic; using System.Web; /// <summary> /// Summary description for Tools /// </summary> public class Tools { public Tools() { // // TODO: Add constructor logic here // }     public static string UppercaseWords(string value)     {         char[] array = value.ToCharArray();         // Handle the first letter in the string.         if (array.Length >= 1)         {             if (char.IsLower(array[0]))             {                 array[0] = char.ToUpper(array[0]);             }         }         // Scan through the letters, checking for spaces.         // ... Uppercase the lowercase letters following spaces.         for (int i = 1; i < array.Length; i++)         {             if (array[i - 1] == ' ')             {                 if (char.IsLower(array[i]))                 {                     array[i] = char.ToUpper(array[i]);                 }  

如何讓app只能在iphone 4以上運行的方法

設定必要的相容性,一定要有陀螺儀,因這個只有iphone 4以上才有的晶片。 <key> UIRequiredDeviceCapabilities </key> <array>     <string> gyroscope </string> </array> 以下是其他網友被退件後,apple回覆的方法 : Yes, it's possible to make an App only for iPhone 4. However in this case you MUST make use of the UIRequiredDeviceCapabilities to limit the App to some iPhone4-only feature like camera-flash. (My iPhone4 App got rejected because I did not limit it to certain features. I just had added to the description: "Runs only on iPhone 4". The rejection letter told me that I must use the UIRequiredDeviceCapabilities if I want to limit the App to a certain hardware. Resubmitted the App with UIRequiredDeviceCapabilities set and the App got approved right away)

ARMv6 與 ARMv7

現在研究如何讓app只限定在iphone 4上運行,剛好找到下列的文章。 What is ARMv7? It's a new CPU architecture of iPhone. Make some apps run faster. What does ARMv7 to do with me? Here is a post by most_Unique found on iPhoneCake. Most apps today use FAT binary which cracked on ARMv7 device will not work on ARMv6 device. ARMv7 = iPhone 3GS/4, iPod 3G, iPad ARMv6 = iPhone 2G/3G, iPod 1G/2G Most crackers, like me, have 3GS. This means when cracking any app it will not work on ARMv6 devices. We have tried to fix it but haven't yet been able to. Now to my understanding apps cracked with ARMv6 device will work on any device. But since most of us have already upgraded some of you with older devices are just stuck. Sorry. So if an app crashes and you have one of these old devices it is likely the app has FAT binary and that is the problem.

將GLPaint的PaintView與底圖一起存成image

在xib檔中,有一個drawview,放在這個drawview下方再加上一個UIimageView,並把他的名字定為backgroundView。接下來把這個View設定IBOutlet到AppController上。 接下來我們可以設定一個save的funcation。 -(void)saveImage{//使用這個方法就可以把圖片全部合併起來,並寫入到Album裡面了。  UIImageWriteToSavedPhotosAlbum([self imageRepresentationForBackground], self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } -(UIImage*) imageRepresentationForBackground {     UIImage* blendedImage=nil;     UIImageView* imageView = [[UIImageView alloc] initWithFrame:backgroundView.bounds];     imageView.image= backgroundView.image;     imageView.contentMode=backgroundView.contentMode;     UIImageView* subView   = [[UIImageView alloc] initWithImage:[drawingView imageRepresentation]];     [imageView addSubview:subView];     UIGraphicsBeginImageContext(imageView.frame.size);     [imageView.layer renderInContext:UIGraphicsGetCurrentContext()];     blendedImage = UIGraphicsGetImageFromCurrentImageContext()

iOS 拍照以及從相簿取出照片

最近在開發camera and album 相關功能的app。將一些用法以及代碼筆記下來。 LCSViewController.h and LCSViewController.m #import @interface LCSViewController:UIViewController @property(nonatomic,retain)IBOutlet UIImageView *imageView; @property(nonatomic,retain)IBOutlet UIBarButtonItem *saveImageBotton; -(IBAction)showCameraAction:(id)sender;//拍照 -(IBAction)saveImageAction:(id)sender;//將照片存到相簿 -(IBAction)pickPhotoFromLibery:(id)sender;//從相簿取出照片 @end #import "LCSViewController.h" @interface LCSViewController () @end @implementation LCSViewController @synthesize imageView; @synthesize saveImageBotton; #pragma mark - Show camera -(IBAction)showCameraAction:(id)sender { UIImagePickerController *imagePickController=[[UIImagePickerController alloc]init]; //You can use isSourceTypeAvailable to check imagePickController.sourceType=UIImagePickerControllerSourceTypeCamera; imagePickController.delegate=self; imagePickController.allowsEditing=YES; imagePickController.showsCamer

讓你的iOS app可以與你的 Rails server溝通

圖片
今天在fb的社團看到網友分享這個類庫,真的實在太方便了~~ NSRails  is a light-weight Objective-C framework (iOS or OS X) for simple but powerful communication with your Rails server.  The comments above were posted using the demo iOS app bundled with the source.  Download it  and  get started! http://nsrails.com/

使用權重控制隨機選取

圖片
水果  |  Apple  | Orange | Banana | Mango ------------------------------------------ 權重  |   70    |   10   |   10   |   10 從這個表中,我們分派了各個權重,我們希望Apple最常被抽中,所以將權重設定較高的值。 因此我們從這個表來實現作法。 fruits = [[NSArray alloc] initWithObjects:@"apple",@"orange",@"banana",@"mango", nil]; //定義水果 weights = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:70],[NSNumber numberWithInt:10],[NSNumber numberWithInt:10],[NSNumber numberWithInt:10], nil]; //定義權重  int currentfruit=0;     NSMutableArray *weighedfruits = [[NSMutableArray alloc] init];         while (currentfruit<[fruits count]){ //step through each fruit[] element        for (int i = 0; i < [[weights objectAtIndex:currentfruit] intValue]; i++) {                  [weighedfruits addObject: [fruits objectAtIndex:currentfruit]];                                  }             currentfruit++;             if (currentfruit==[fruits coun

iOS 產生隨機亂數1~100

-(IBAction)generateNumber:(id)sender { int number = (arc4random()%100)+1; //Generates Number from 1 to 100. NSString *string = [NSString stringWithFormat:@"%i", number]; label.text = string }

NSTableView SelectedRow

圖片
原本一直以為NSTableView跟UITableView的作法會全部一樣,就一直試著要做選取某一列 但是就一直沒有辦法正確的把值選到,今天晚上光找這個解法就找了很久,後來終於有試 出來了,原本這個選取的動作跟iphone/ipad比起來簡易了許多,難怪這個資料不怎麼好找。 一開始我們要先把TableView建立一個IBoutlet到h檔中,這樣我們就可以去對tableview操作。 接下來就如下圖,我們把tableview建立連結到File'sOwner,我們事先已經建了一個方法叫做 - (IBAction)tableViewSelected:(id)sender; 把這兩個接口連結後,我們就可以對tableview點選去做一些事情了。 以下是使用方法的參考 - (IBAction)tableViewSelected:(id)sender {       NSLog(@"the user clicked row %ld",[tableViewMenu selectedRow ]); // selectedRow 這個方法就是指選到tableView的某一row了。 } // end tableViewSelected

CoreData 筆記 (2)

當開發Mac App並使用Coredata的話,要對某一筆資料做更新,可以使用下列的方法。 事先在xib檔中把arraycontroller建立一個iboutlet的連線到h檔中,這時候我們就可以直接 使用arraycontroller中的資料了。 - (IBAction)RestLearnRecord:(id)sender {// 重置資料          //將arraycontroller的陣列取出     NSMutableArray *ctarray = [CategoryArray arrangedObjects];     //選取某一個索引上的物件,並給於對應的型態  Category *inData = [ctarray objectAtIndex:SelectIndexs];     //直接對此物件做操作     [inData setRemember:[NSNumber numberWithInt:100]];     [inData setTotally:[NSNumber numberWithInt:900]];         NSError *error = nil;       //修改完資料後,要執行存檔的動作,這時候畫面上的資料就會被更新了     if (![[self managedObjectContext] save:&error]) { //此行一定要執行         NSLog(@"Failed to save - error: %@", [error localizedDescription]);     }else {         [tableViewMenu reloadData];     }         }

在OpenGL的環境下把畫面存圖片 Code Snippet

在glpaint裡要把畫面存成照片需要加入以下的程式碼。 void ProviderReleaseData ( void *info, const void *data, size_t size ) { free((void*)data); } -(UIImage*) upsideDownImageRepresenation{ int imageWidth = CGRectGetWidth([self bounds]); int imageHeight = CGRectGetHeight([self bounds]); //image buffer for export NSInteger myDataLength = imageWidth* imageHeight * 4; // allocate array and read pixels into it. GLubyte *tempImagebuffer = (GLubyte *) malloc(myDataLength);          glReadPixels(0, 0, imageWidth, imageHeight, GL_RGBA, GL_UNSIGNED_BYTE, tempImagebuffer); // make data provider with data. CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, tempImagebuffer, myDataLength, ProviderReleaseData); // prep the ingredients int bitsPerComponent = 8; int bitsPerPixel = 32; int bytesPerRow = 4 * imageWidth; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGImageA

Core Data 學習筆記

圖片
做到現終於了解Coredata是怎樣的操作了,之前一直以為會跟ios上的操作不一樣,但是後來 看完了Apple官方文件,發現到Apple其實真得很不錯,從Mac到ios上的用法都大致相同,很 多地方其實可以用ios的一些原理,反推回去,不過還是有些許的部份是不同的。 在Mac上的Coredata,是標榜著" write less code ",這可是這Coredata當時的發展目標,在Mac 上確實真的看到了,他真的要寫的code很少,幾乎是不太要寫到什麼代碼。很快就可以完成 一個資料庫的加入、移除、修改,這三大基本動作,就連關聯式資料庫的一些維護動作,他 也全都在背後全做好了。 到目前的階段大致上需要的功能都有了,接下來可以專心的想如何開發出Mac App了。 以下是基本操作的代碼 在這個測試檔中,使用的Entity Class就叫做"Entity",使用的Model也是叫做Entity,裡面只有 一個欄位就叫做"name",標記為紅色的部份就是需要自已替換上的部份。 - (IBAction)fetchRequest:(id)sender {//取出所有資料          NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];     NSEntityDescription *entity = [NSEntityDescription entityForName:@" Entity " inManagedObjectContext:[self managedObjectContext]];     [fetchRequest setEntity:entity];          NSError *error = nil;     NSArray *fetchedObjects = [ [self managedObjectContext] executeFetchRequest:fetchRequest error:&error];     if (fetchedObjects ==