开发过程中遇到的实际问题

对用户进行定位操作

在现在的app中,定位操作的运用越来越广泛了,无论是外卖类APP进行点餐送餐,还是不同区域的交友类app寻找附近的人,都需要运用到定位操作,关键代码如下所示:

-(void)locationStart{

    //判断定位操作是否被允许

    locationString = @"";

    if([CLLocationManager locationServicesEnabled]) {

        _locationManager = [[CLLocationManager alloc] init] ;

        _locationManager.delegate = self;

        //设置定位精度

        _locationManager.desiredAccuracy=kCLLocationAccuracyBest;

        _locationManager.distanceFilter = kCLLocationAccuracyHundredMeters;//每隔多少米定位一次(这里的设置为每隔百米)

        if (IOS8) {

            //使用应用程序期间允许访问位置数据

            [_locationManager requestWhenInUseAuthorization];

        }

        // 开始定位

        [_locationManager startUpdatingLocation];

    }else {

        //提示用户无法进行定位操作

        NSLog(@"%@",@"定位服务当前可能尚未打开,请设置打开!");

    }
}

利用NavigationViewController进行页面的跳转

当NavigationViewController跳转有了特殊的需求的时候,比如说需要从A push到C,但是Cpop回到的是B,那就可以通过一下代码来实现

在A跳转到C时这样跳转:
NSMutableArray *array = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[array addObject:controllerB]; //加入B
[array addObject:controllerC]; //加入C
[self.navigationController setViewControllers:array animated:YES]; 

NavigationViewController的小细节

对于系统自带的NavigationViewController,不知道小伙伴们有没有注意到一点,就是底部有一条黑线,有时候会影响美感,如下图所示:

开发过程中遇到的实际问题_第1张图片
有黑线图片.png

可能直接这么看不是很清楚,那么利用下系统自带的攻击来看下结构图

开发过程中遇到的实际问题_第2张图片
有黑线结构图.png

现在通过图片能够清楚地看到了那条黑线,如果小伙伴们想把这条黑线隐藏了就可以采用以下的代码来试下:

 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[ViewController new]];
    NSArray *arry = [nav.navigationBar subviews];
    for (UIView *view in arry) {
        NSString *viewName = NSStringFromClass([view class]);
        if ([viewName isEqualToString:@"_UINavigationBarBackground"]) {
            UIImageView *line = [view valueForKey:@"_shadowView"];
            line.hidden = YES;
        }
    }
    self.window.rootViewController = nav;

代码改成这样之后效果图如下:

开发过程中遇到的实际问题_第3张图片
无黑线图片.png

如果觉得还是不够清晰的话,可以通过结构图来进行查看

开发过程中遇到的实际问题_第4张图片
无黑线结构图.png

是不是觉得很神奇,runtime真的很强大,能够解决一些本来很棘手的问题,通过runtime找出相关属性进行修改操作,就能达到想要的效果。

你可能感兴趣的:(开发过程中遇到的实际问题)