真机相关iOS开发之技能点技巧

项目总结-1

2016-04-07  本文已影响163人  MarceauHe

main程序入口

UIApplication里面做了哪些事情

为什么要自定义类

修改了控制器的返回按钮,但是没有点击按钮按钮的时候按钮也能做出响应,如何解决?

 //设置按钮的尺寸为自适应,此时按钮的尺寸并不大,但是当鼠标点击按钮右侧很远的位置的时候这个按钮也会被点击,为了解决这个问题,可以换用一个View将按钮包装起来,然后用item将View包装起来
    UIView *view = [[UIView alloc] initWithFrame:btn.bounds];
    [view addSubview:btn];
    return [[UIBarButtonItem alloc] initWithCustomView:view] ;

隐藏push出来的控制器的TabBar

- (void)setting
{
    HMXSettingViewController *settingVc = [[HMXSettingViewController alloc] init];

    // 一定要注意:在Push之前去设置这个属性(通过方法名可以看出,是在push的时候有效)
    settingVc.hidesBottomBarWhenPushed = YES;

    // 跳转到设置界面
    [self.navigationController pushViewController:settingVc animated:YES];
}

UITabBarItemUINavigationItem以及UIBarButtonItem

利用KVC来替换系统的TabBar的底层实现

富文本属性

一个恶心的BUG

系统自带的侧滑返回功能

- (void)viewDidLoad {
    [super viewDidLoad];
    // Bug:假死状态:程序一直在跑,但是界面死了

    //自己的理解:
    //在根控制器,系统原本的做法是会让代理做一些控制,即使用户触发了侧滑手势,也不实现侧滑,由于这里根控制器的左侧返回按钮没有重写,所以它的代理还是有效的,在没有push出下一个控制器之前,在根控制器上触发侧滑手势,代理会去做一些控制
    //我们这里的做法是将系统侧滑手势的代理给换了,如果用户在根控制器触发侧滑手势,这个手势将找不到原来的代理去做一些控制,因此出现了假死的现象
    //因此我们要禁止在根控制器触发侧滑手势,在手势的代理方法中可以禁止掉
    //在push出来的控制器上触发侧滑,由于我们将系统自带的侧滑手势的代理给换了,系统原本的做法是如果自定义了左侧的返回按钮,那么这个侧滑返回功能会失效,这个是通过它原本的代理做的一些控制,但是我们将它的代理给换掉了,它找不到原本的代理做控制,因此,侧滑功能海还会保留

    // 清空手势代理,恢复滑动返回功能
    self.interactivePopGestureRecognizer.delegate = self;

}

#pragma mark - UIGestureRecognizerDelegate

// 是否触发手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 在根控制器下 不要 触发手势
    return self.childViewControllers.count > 1;
}

全屏侧滑


- (void)viewDidLoad {
    [super viewDidLoad];

    // 全屏滑动功能
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];
    [self.view addGestureRecognizer:pan];

    // 调用代理方法来控制手势什么时候触发(非根控制器的时候才触发)
    pan.delegate = self;

    // 让系统的侧滑手势失效
    self.interactivePopGestureRecognizer.enabled = NO;

}

#pragma mark - UIGestureRecognizerDelegate
// 是否触发手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 在根控制器下 不要 触发手势
    return self.childViewControllers.count > 1;
}

占位视图的实现

如何修改一个第三方框架的配置文件

如果发现在设置图片的时候将图片拖进Assets中后在程序中加载不进来,可以直接将整个图片的问价夹放到supportingFile的目录下

上一篇下一篇

猜你喜欢

热点阅读