zoukankan      html  css  js  c++  java
  • IOS

    2015.12.23

    1.tableView单组,多组数据(实现datasource协议)显示;(单组就是section=1的多组)。

    2.数据显示时的性能优化:

      创建cell时设置一个id,然后每次创建前先带id去缓存池中找有没有可用的cell。如果有,修改里面的数据拿去用。如果没有,创建新的cell。

    3.tableView右侧导航,实现datasource协议里的对应方法即可。

    2015.12.24

    1.自定义cell,就是定义一个xil文件和一个与之对应的类文件。然后使用bundle加载xil文件获得一个自定义cell对象。

    2.给tableview设置header和footer(当tableview的类型为group时,每个section也有头和尾)。比如:header显示滚动广告,footer显示“加载更多”等。

    3.重写awakeFormNib,当xib文件把初始化成一个对象后会调用,利用该方法可以 实现在xib所描述的view加载完毕后执行一些操作。

    2015.12.25(圣诞节啊有木有...)

    1.自定义高度不确定的cell,如微博;过程:

      定义一个数据model和一个记录cell内部各个子控件frame的model。controller中包含frameModel,frameModel中包含数据model(当将数据给frameModel时就可以计算各个部分的frame)。重写返回cell的方法时,创建自定义cell,将对应的frame传给cell就可以得到个性化的cell了。

    2015.12.29

    1.计算一段文字的长宽:

    NSDictionary *attrs=@{NSFontAttributeName:font};
    CGSize size = [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;

    2.无损拉伸图片(四周不变,只拉伸纯色部分)

    UIImage *img=[UIImage imageNamed:name];
    UIImage *stretchedImg = [img stretchableImageWithLeftCapWidth:img.size.width*0.5 topCapHeight:img.size.height*0.5];

     其中还有resize开头的一些方法也可以做到该效果的图片拉伸。

    3.键盘监听

     利用通知机制NSNotificationCenter实现监听键盘的动态,如:键盘被文本框叫出时,界面跟着上移:

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.tableView.dataSource=self;
        self.tableView.delegate=self;
        self.tableView.backgroundColor=[UIColor colorWithRed:224/255.0 green:224/255.0 blue:224/255.0 alpha:1];
        self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
        
        //添加键盘监听
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
    }
    
    -(void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
    
    -(void)keyboardWillChangeFrame:(NSNotification *)note
    {
        CGRect keyboardFrame=[note.userInfo[UIKeyboardFrameEndUserInfoKey]CGRectValue];
        CGFloat transformY=keyboardFrame.origin.y-self.view.frame.size.height;
        
        //时间
        CGFloat duration=[note.userInfo[UIKeyboardAnimationDurationUserInfoKey]floatValue];
        [UIView animateWithDuration:duration animations:^{
            self.view.transform=CGAffineTransformMakeTranslation(0, transformY);
    
        }];
    }

    4.通过文本框的属性可以设置被其叫出的键盘的一些属性,比如Return Key可以设置键盘右下角的按钮类型,还有Auto-enable Return Key可以实现文本框没有文字的时候键盘右下角按钮不可用等。另外通过成为文本框的代理来监听键盘点击的一些事件,比如:textFieldshouldReturn:当点击键盘右下角按钮时调用该方法。

    2016.01.25

    项目常见文件:

      info.plist:项目相关全局的设置;

      prefix.pch:其实就是一个头文件。在该头文件中定义的东西(比如宏)在项目中任何地方都可以使用,很好的一个例子就是:定义一个条件编译的宏,来控制程序中的NSLog,使其在调试的时候正常打印,在发布时就去掉。实例代码如下:

    #ifdef DEBUG
    #define MyLog(...) NSLog(__VA_ARGS__)
    #else
    #define MyLog(...)
    #endif

     另外,把这些宏定义放到pch文件的#ifdef __OJBC__中,否则,如果项目中有c语言文件,可能会报错,因为有些定义只能在oc中使用,比如import包含

    2016.01.26

    整个程序启动的原理:

    main函数->ApplicationMain函数->创建application,创建applicationDelegate,并将代理设置给application->application开启消息循环->执行代理方法applicationDidFinishLaunchingWithOptions->方法内部生成UIWindow,将window赋值给代理的window变量,创建ViewController,并将控制器设置给window的根控制器(如果有storyboard,就根据info.plist加载mainStoryBoard,创建uiwindow,创建箭头所指的主控制器,并设置给window)。

    如此程序便启动了...

    2016.01.28

    1.处理事件一般有三种方式:①直接有事件处理方法,比如按钮点击②没有直接处理方法,试一试是不是可以成为代理,实现代理的方法③最后就是利用通知NSNotificationCenter来监听某个控件的某个消息。

    想要监听文本框的内容变化就需要使用通知机制来实现,监听消息:UITextFieldTextDidChangeNotification。

    2.数据存储:@存Plist:拿到沙盒路径NSHomeDirectory()。@存偏好设置:[NSUserDefaults standardUserDefaults]。@对象存储(实现NSCoding协议):存->[NSKeyedArichiver archiveRootObject..];取->[NSKeyedUnarchiver unarchiveObjectWithFile..]

  • 相关阅读:
    macOS 常用配置
    maven 常用配置
    log4j(1.x)最全配置!!!
    Python2 中 input() 和 raw_input() 的区别
    用 Maven 构建 Java-Scala 混合项目
    trim() 的秘密
    【目录】一起来学 Kafka 吧
    Spring in Action.4th
    Hibernate快速入门
    html2canvas 跨域图片无法正常加载问题解决办法
  • 原文地址:https://www.cnblogs.com/dreamofei/p/5070317.html
Copyright © 2011-2022 走看看