Menu Home

ios

Xcode6: 找回”Empty Application”模版

Xcode6取消了 “Empty Application”的模版,但是有时候我们还是有创建”Empty Application”的需求,可以按如下步骤来实现: 删除ViewController.h和ViewController.m文件 删除Main.storyboard 删除LaunchScreen.xib 经过以上步骤后,你会发现编译失败,因为找不到Main.storyboard,我们还需要修改一下info.plist中的配置: 删除Main storyboard file base name 后再次编译,这次可以成功运行,但是屏幕显示的是黑屏。 打开AppDelegate.m修改application:didFinishLaunchingWithOptions:方法: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }

Objc: NSString+URLEncoding分类

#import <CoreFoundation/CoreFoundation.h> #import <Foundation/Foundation.h> @implementation NSString (URLEncoding) -(NSString*)URLEncodedString { CFStringRef StringRef = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR(“+$,#[] “), kCFStringEncodingUTF8); NSString *result = (NSString*)CFBridgingRelease(StringRef); return result; } -(NSString*)URLDecodedString { CFStringRef stringRef = CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)self, CFSTR(“”), kCFStringEncodingUTF8); NSString *result = (NSString*)CFBridgingRelease(stringRef); return result; } @end

iOS: segue跳转

需求 现在有2个View,第一个View(SummaryView)中包含了一个TableView,第二个View(DetailView)中包含了一个TextView,其内容显示的是对应第一个TableView中的某一行的详细内容。当点击SummaryView中的某一行后,跳转到DetailView显示其详细信息。 自动跳转 自动跳转的方式极其简单,甚至不需要自己写任何一行代码,但是它存在一些数据传递的问题,这个问题的下次在说。 选中TableView中的TableViewCell,使用快捷键(Ctrl + 3指)跟DetailView中的DetailViewController建立一个Segue,在弹出的菜单中选择Push。建立Segue后如下图: 选中Segue打开Attribute inspector,设置Identifier为showDetail。 prepareForSegue:sender方法会在View跳转的时候被回调, 可以在这里处理一些跳转过程事务: – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@”showDetail”]) { NSLog(@”prepareForSegue:sender invoked: %@”, self.description); } } 前面说过使用自动跳转的方法会有一些局限性,比如数据的传递问题。很多时候还是需要使用代码的方式来手动跳转。 手动跳转 同样的需要在SummaryView和DetailView之间建立Segue,但是这次不是在TableViewCell和DetailViewController之间,而是在SummaryViewController(TableView所在的ViewController)和DetailViewController之间建立Segue。 选中SummaryViewController,使用快捷键(Ctrl + 3指)跟DetailViewController建立一个Segue,在弹出的菜单中选择Push。 跟第一种方法一样设置Segue的Identifier为showDetail。 最后调用performSegueWithIdentifier:sender:实现View跳转: [self performSegueWithIdentifier:@”showDetail” sender:self]; 关于Segue传值,可以阅读这里

IOS: CGRectInset

dx, dy为正 UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 500, 500)]; redView.backgroundColor = [UIColor redColor]; [self.view addSubview:redView]; UIView *blueView = [[UIView alloc]init]; blueView.frame = CGRectInset(redView.frame, 50, 50); blueView.backgroundColor = [UIColor blueColor]; [self.view addSubview:blueView]; dx, dy为负 UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 500, 500)]; redView.backgroundColor = [UIColor redColor]; [self.view addSubview:redView]; […]

IOS: PickerView联动

@implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@”provinces_cities” ofType:@”plist”]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; self.pickerData = dict; self.pickerProvincesData = [self.pickerData allKeys]; NSString *selectedProvincesData = [self.pickerProvincesData objectAtIndex:0]; self.pickerCitiesData […]

Objective-C:分类(category)

objective-c中对一个类的扩展除了使用常见的继承外还提供了一种独特的方法:分类(Category)。 先看一个使用分类扩展类的小例子: 将被扩展的类: #import <Foundation/Foundation.h> @interface Fraction : NSObject { int numerator; int denominator; } @property int numerator, denominator; -(void) setTo: (int)n over: (int)d; -(void) print; @end @implementation Fraction -(void) setTo:(int)n over:(int)d { numerator = n; denominator = d; } -(void) print { NSLog(@”%d / %d”, numerator, denominator); } @end […]