学习随笔笔记(未整理)

1.使用FMDB处理常量变量数据时,必须要把数据封装成对象,否则程序会崩溃报错。例如我想把一个BOOL值存进数据库时,需要做这些操作:

 

-(BOOL) insertNewModelDataToDatabase:(flower *)flower
{
    FMDatabase *db = [FMDatabase databaseWithPath:self.databasePath];
    
    if(![db open]) return NO;
    
    int isNotification = (flower.needNotification)? 1:0;

    BOOL success = [db executeUpdate:@"INSERT INTO flowers (name, soil, date, time, pic, noti) VALUES (?, ?, ?, ?, ?, ?)",
                    flower.name, flower.soil, flower.date, flower.time, flower.pic, [NSNumber numberWithInt:isNotification]];
    
    [db close];
    
    if (!success) NSLog(@"%@", [db lastErrorMessage]);
    
    return YES;
}

 

 

2.如何消除UITableviewCell的分割线的空白,添加以下代码:

 

#pragma mark 显示完整分割线(消除左空白)

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }
    
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

- (void)viewDidLayoutSubviews
{
    if ([self.detailTableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.detailTableView setSeparatorInset:UIEdgeInsetsZero];
    }
    
    if ([self.detailTableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.detailTableView setLayoutMargins:UIEdgeInsetsZero];
    }
}

 

3.UIView和CALayer的选择

UIView比CALayer多的是处理事件的功能。UIView之所以能显示出东西, 是因为其里面有一个CALayer图层。
所以如果要根用户交互用UIView.如果不需要交互,CALayer性能会更高。

 

4.UIView详细的显示过程

  1. view.layer会准备一个Layer Graphics Context(图形上下文)并传给view.layer.delegate的drawLayer:inContext.
  2. 所以View其实只是图层的代理, 当图层需要显示的时候。会调用drawLayer:inContext:方法。

  3. 而这个方法中, 如果代理存在, 又会调用delegate的drawRect:(CGRect)rect方法来绘制到图层上。

  4. 所以View上的drawRect所画的东西都会绘制到view.layer上面
  5. 系统再将view.layer内容拷贝到屏幕, 完成view的显示。

转载于:https://www.cnblogs.com/mysaya/p/4612625.html

你可能感兴趣的:(学习随笔笔记(未整理))