01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容

1> [NSBundle mainBundle].infoDictionary

2> 版本号在info.plist中的key:kCFBundleVersionKey

2.沙盒的数据存储及读取

1> 数据存储:

[[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey];  存储数据时记得同步一下 [[NSUserDefaults standardUserDefaults] synchronize]; 这两句话一般是成对存在的 

2> 数据读取:

[[NSUserDefaults standardUserDefaults] objectForKey:versionKey];

(1,2)小知识点综合例子: 沙盒中存储版本号并读取版本号和应用程序里的版本号对比是否相同 来判断所要跳转的根视图控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    /*
     二、判断用户是否第一次使用这个版本
     1.将沙盒中的版本号和info.plist中的版本号进行比较
     2.第一次使用:显示版本新特性界面
     3.非第一次使用:显示主界面(显示状态栏)
     */
//    1.从info.plist字典中取出版本号
    NSString *versionKey = (NSString *)kCFBundleVersionKey;
    NSString *version = [[NSBundle mainBundle]  objectForInfoDictionaryKey:versionKey];
//    2.取出存在于沙盒中的版本号
    NSString *saveVersion = [[NSUserDefaults standardUserDefaults] objectForKey:versionKey];
//    3.判断info.plist中的版本号和沙盒中的版本号进行比较
    if ([saveVersion isEqualToString:version]) {  // 版本号相同 非第一次使用:显示主界面(显示状态栏)
        // 显示状态栏
        application.statusBarHidden = NO;
        self.window.rootViewController = [[MainViewController alloc]init];
    }
    else      // 版本号不同 非第一次使用:显示主界面(显示状态栏)
    {
        [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey];
        [[NSUserDefaults standardUserDefaults] synchronize];   // 同步
        self.window.rootViewController = [[NewFeatureViewController alloc] init];
    }
    [self.window makeKeyAndVisible];
    return YES;
}


3.控制器view的高度和状态栏statusBar的关系

创建控制器的view时,系统会检测状态栏是否显示

* 如果有状态栏,那么控制器view的高度是460(iPhone5中是548)

* 如果没有状态栏,那么控制器view的高度是480(iPhone5中是568)

ps:  statusBar状态栏的高度占了20个像素点



4.[UIScreen mainScreen].applicationFrame的取值

以3.5inch为例(320x480)

1> 没有状态栏,applicationFrame的值{{0, 0}, {320, 480}}

2> 有状态栏,applicationFrame的值{{0, 20}, {320, 460}}



5.按钮的状态

UIControlStateNormal       普通(默认的状态)

UIControlStateHighlighted  高亮(用户长按的时候)

UIControlStateDisabled     失效(通过代码控制:enabled属性)

UIControlStateSelected     选中(通过代码控制:selected属性)

(5)例子 给一个按钮添加监听事件 点一下选中 再点一下选中就取消

// 1.给UIButton添加监听事件
[shareBtn addTarget:self action:@selector(shareClick:) forControlEvents:
             UIControlEventTouchUpInside];
// 2.设置默认状态为没有选中状态
            shareBtn.selected = NO;
// 3.设置监听的方法为按钮状态的反选
- (void)shareClick:(UIButton *)btn
{
    btn.selected = !btn.selected;
}
// 三部曲搞定 


6.错误调试技巧

1> 一个控件无法显示出来的可能原因

* 没有宽高(宽高为0)

* 位置不对

* hidden=YES

* 没有被addSubview到屏幕上

2> 一个UIScrollView无法滚动

* contentSize没有值

* 不能接收到触摸事件

3> 一个控件无法跟用户交互(无法接收事件)的可能原因

* (父控件的)userInteractionEnabled = NO;

* (父控件的)hidden = YES

* (父控件的)alpha <= 0.01

* (父控件的)背景是clearColor



7.按钮的各种状态设置

// 高亮状态下不更改图片的颜色

self.adjustsImageWhenHighlighted = NO;

// 是否选中状态

self.selected = YES;

// 是否可用状态

self.enabled = YES;

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置,布布扣,bubuko.com

时间: 2024-12-25 22:57:32

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置的相关文章

IOS 读取项目中的plist文件

在项目中,经常需要读取配置文件,现在就来看看读取plist配置文件的代码 NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"fileName" ofType:@"plist"]; NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:plistPath];

iOS之多控制器管理--项目中的常见文件

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

iOS 项目中的常见文件

iOS的笔记-项目中的常见文件   新建一个项目之后,有那么多的文件,下面介绍一下主要的几个. 1.文件名 (1)AppDelegate UIApplication的代理,app收到干扰的时候,进行处理系统事件.比如,来电话,内存警告,应用启动.. (2)ViewController 控制器,可以通过xib\storyboard\代码 三种方式创建可视化界面. 这个可视化界面,将会显示在UIWindowz中 . (3)MainStoryboard 系统自动创建的 (4)Images.xcasse

对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新

对于JavaWeb项目中web.xml文件中Servlet的基本配置有一些小记录写在这里,并做参考,有新的及时更新 <?xml version="1.0" encoding="UTF-8"?> <web-app> <!-- 在创建web项目时,若是系统自动生成,上面会有一串配置信息,因为不影响大局,这里没有列出--> <!-- 流程: 当在网页中使用/login时,发现不是网页,则会在web.xml找寻对应的名字,由url-

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&

项目中出现paxheader文件夹,里面的文件名称是乱码,是不是病毒?

最近从SVN上Check下来的一个项目中包含paxheader文件夹,里面的文件名称是乱码,是不是病毒呢? 经过网上一番搜索,结合公司有人使用Linux系统的情况,总结可能的原因是代码之前是在Linux系统下写的,可能是在Linux系统下打成tar.gz包发到Windows系统下然后解压出来 的,由于tar.gz的一些特性Windows下的解压软件支持的不好,所以才形成了paxheader文件夹. 参考: http://lists.freebsd.org/pipermail/freebsd-cu

Android项目中的R文件丢失

Android项目中的R文件丢失恢复的方法如下: (1).修改xml文件命名中的大写字母 (2).选中项目,点击 Project - Clean , 清理一下项目: (3).从别的工程中拷贝一份R文件过来,然后string.xml里随便改动一下,也可更新R文件. (4).右击你的工程(项目)-->Properties-->Android --> 选择相应的target 然后 点击 apply 即可.

XamarinSQLite教程在Xamarin.Android项目中定位数据库文件

XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocuments.db文件的具体步骤: (1)在VS的工具栏中找到打开Android设备监视器 (DDMS)按钮,如图1.32所示 (2)单击Open Android Device Monitor (DDMS) 按钮,弹出Android Device Monitor界面,如图1.33所示. (3)选择File

iOS中info.plist文件的一些相关配置

下面是一些iOS项目中常用的plist文件的相关设置: 1.定位为题: 调用定位时在target里设置两个属性:NSLocationAlwaysUsageDescription  NSLocationWhenInUseUsageDescription 2. 网络请求: Xcode升级后不支持http访问的解决办法:在Info.plist中添加NSAppTransportSecurity类型Dictionary.    在NSAppTransportSecurity下添加NSAllowsArbit