iosiOS精品文章-性能优化(APM)代码改变世界

UI控件进阶1——程序启动原理

2015-03-27  本文已影响379人  冷漠叻荭颜

数据选择控件



// UIPickerView的数据源方法 @required
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; // 设置UIPickerView共有几列
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; // 设置每列中有几行

// UIPickerView的代理方法 @optional
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; // 每行的数据内容
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component; // 监听PickerView的选择事件
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view; // 自定义每行显示的样式

// UIPickerView的对象方法
- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated; // 选中指定component列中的row行,滚动到指定的行,不会触发代理方法
- (NSInteger)selectedRowInComponent:(NSInteger)component; // 返回当前列的选中行的索引
- (void)reloadAllComponents; // 重新加载所有列的数据
- (void)reloadComponent:(NSInteger)component; // 重新加载指定列的数据

@property (nonatomic) UIDatePickerMode datePickerMode; // 日期选择模式,默认UIDatePickerModeDateAndTime
@property (nonatomic, retain) NSLocale *locale; // 语言环境,默认[NSLocale currentLocale]
@property (nonatomic, retain) NSDate *date; // 默认是创建控件时的当前系统日期
@property (nonatomic, retain) NSDate *minimumDate; // 指定min/max日期范围。默认为nil。如果 min > max,指定的数值会被忽略。在UIDatePickerModeCountDownTimer模式无效
@property (nonatomic, retain) NSDate *maximumDate; // 默认为nil
@property (nonatomic) NSTimeInterval countDownDuration; // 用于UIDatePickerModeCountDownTimer模式,默认是0.0,最大不能超过23:59 (86,399 秒)。设置数值以分钟为单位
@property (nonatomic) NSInteger minuteInterval; // 间隔分钟,最小1,最大30
- (void)setDate:(NSDate *)date animated:(BOOL)animated; // 设置日期(动画)

程序的启动原理


// 获取UIApplication对象
UIApplication *app = [UIApplication sharedApplication];

// iOS8系统要求设置通知的时候必须经过用户许可
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[app registerUserNotificationSettings:settings];
// 设置右上角,有10条消息
app.applicationIconBadgeNumber = 10;

// 联网操作时,状态栏上的等待图标指示器,waiting图标
app.networkActivityIndicatorVisible = YES;

// 利用UIApplication打开某个资源,系统会自动根据协议识别使用某个app打开
[app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];

// 设置状态栏是否隐藏
app.statusBarHidden = YES;

// app第一次启动完毕后就会调用(当程序启动后会显示一张启动图片, 当这个图片显示完毕, 消失后, 就开始调用这个方法)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// 当程序进入后台时,调用该方法,在这个方法中可以做一些保存当前程序数据, 暂停程序的操作
- (void)applicationDidEnterBackground:(UIApplication *)application;
// 当程序再次进入前台的时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application;
// 当发生内存警告时触发该事件
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;

int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
2. 参数介绍:
    * argc:使用main函数的argc即可。
    * argv:使用main函数的argv即可。
    * principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类),如果为nil,则用UIApplication类作为默认值。
    * delegateClassName:指定应用程序的代理类,UIApplicationDelegate协议中定义的方法,在该类中实现。
3. UIApplicationMain函数会:
    * 根据principalClassName创建UIApplication对象。
    * 根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate对象。
    * 代理参数必须传递,如果传nil,则显示“黑屏”。
// 默认调用方式
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
// 等价于
UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");




上一篇下一篇

猜你喜欢

热点阅读