1. 设置颜色,平铺图片

[UIColor colorWithPatternImage:[UIImage p_w_picpathNamed:@"bg_actionSheet_panel.png"]];


2.设置p_w_picpathview的内容模式

p_w_picpathView.contentMode


3. addChildViewController:方法是添加子控制器,有顺序之分,如一下团购控制器可以这么拿到:

UIViewController *old = self.childViewControllers[0];

地图控制器

UIViewController *old = self.childViewControllers[1];

。。。。。。

    //1.团购

    TGDealListController *deal = [[TGDealListController alloc] init];

    [deal.view setBackgroundColor:[UIColor blackColor]];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:deal];

    [self addChildViewController:nav];

    

    //2.地图

    TGMapController *map = [[TGMapController alloc] init];

    [map.view setBackgroundColor:[UIColor greenColor]];

    UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:map];

    [self addChildViewController:nav1];

  

    //3.收藏

    TGCollectController *collect = [[TGCollectController alloc] init];

    [collect.view setBackgroundColor:[UIColor blueColor]];

    UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:collect];

    [self addChildViewController:nav2];

    

    //4.我的

    TGMineController *mine = [[TGMineController alloc] init];

    [mine.view setBackgroundColor:[UIColor yellowColor]];

    UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:mine];

    [self addChildViewController:nav3];


4.ipad上 不管横屏还是竖屏,

self.view.frame.size.width = 屏幕宽高最小的值

self.view.frame.size.height = 屏幕宽高最大的值



5.//1.appearance方法返回一个导航栏的外观对象

  //修改了这个外观对象,相当于修改了整个项目中的外观

  UINavigationBar *bar = [UINavigationBar appearance];


  //2.设置导航栏的背景图片

    [bar setBackgroundImage:[UIImage p_w_picpathNamed:@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault];


6.- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:

(NSInteger)topCapHeight 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。

根据设置的宽度和高度,将接下来的一个像素进行左右扩展和上下拉伸。

注意:可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。

注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。


7.

+(void)load方法是将类加载进内存时调用的(类还未使用),一个类只能调一次这个方法

+(void)initialize方法是当第一次使用这个类时调用,一个类只会在第一次使用时调这个方法


8.在pad上,controller控制器有modalPresentationStyle属性,可以设置模态出来的效果

nav.modalPresentationStyle = UIModalPresentationFormSheet;

[self presentViewController:nav animated:YES completion:nil];


模态推出页面时,可以设置controller的modalTransitionStyle属性,可以设置模态推出效果


9.监听屏幕旋转通知

//监听屏幕旋转通知

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenRotate) name:UIDeviceOrientationDidChangeNotification object:nil];


#pragma mark -屏幕旋转时调用

-(void)screenRotate

{

    NSLog(@"screenRotate");

}


10.将json转成plist文件,反过来转换也是一样思路

NSArray *array = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:@"。。。。。.json"] options:NSJSONReadingAllowFragments error:nil];

    [array writeToFile:@"。。。。。.plist" atomically:YES];



11.tableView的两个代理方法

//显示每个section的标题

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section


//显示每个section索引标题,(显示在右边)

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView



12.

如果要让某个控制器的view添加在当前控制器上面的化,最好先让该控制器成为当前控制器的子控制器

[self  addChileViewController:控制器变量名];

//换句话说:如果a控制器的view添加在b控制器的view上,那么a的view是b的view的子视图,a控制器最好也要是b的子控制器,b控制器通过addChileViewController:方法添加a控制器为子控制器


13.延时调用某个方法

[self  performSelector:@selector(locaationClick)  withObject:nil  afterDelay:0.5];


14.UIImageView[[UIImageView allocinitWithImage:img];创建的宽高默认是图片img的宽高。

        UIImage *img = [UIImage p_w_picpathNamed:@"separator_topbar_item"];

        UIImageView *divider = [[UIImageView alloc] initWithImage:img];


15.

清空前面设置的CGAffineTransform属性

 _scrollView.transform = CGAffineTransformIdentity;



16.

//防止代码块里重复return TGDealTopMenu对象

    __unsafe_unretained TGDealTopMenu *menu = self;

    _showingMenu.hideBlock = ^{

        // 1.取消选中当前的item

        //->直接访问成员变量

        menu->_selectedItem.selected = NO;

        menu->_selectedItem = nil;

        

        // 2.清空正在显示的菜单

        menu->_showingMenu = nil;

    };


17.数组有个makeObjectsPerformSelector:方法,作用是让数组里的每个对象都调用这个方法

例子:

    //让数组里面的所有子控件都执行removeFromSuperview这个方法

    [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];


18.UIView自带方法:-(void)layoutSubviews方法是在屏幕宽高改变时,比如横竖屏转换时会调用 

#pragma mark -控件本身的宽高发生改变时调用

-(void)layoutSubviews

{

    [super layoutSubviews];

    ......

}


19.有一堆控件需要显示,按格子那样排列,计算有几行

int rows = (控件总个数 + 每行列数 - 1) / 每行列数


20.要设置控件的高度或者宽度,不能直接用 视图.frame.size.height = 100;

但可以: CGRect frame = 视图.frame;

       frame.size.height = 100;

       视图.frame = frame;