美文网首页
IOS 设置tips

IOS 设置tips

作者: songjk | 来源:发表于2017-06-07 10:51 被阅读0次

    1.设置屏幕常亮

    [UIApplicationsharedApplication].idleTimerDisabled =YES;

    2.设置屏幕亮度

    float flag = 0.5;// 0.1到1.0;

    [[UIScreenmainScreen] setBrightness:flag];

    3.xcode路径配置

    项目根目录$(SRCROOT)/:配置pch文件:$(SRCROOT)/projectname/PCH.pch

    4.控制器旋转方向控制

    -(BOOL)shouldAutorotate // 是否支持旋转

    {

    return NO;

    }

    - (UIInterfaceOrientationMask)supportedInterfaceOrientations //方向控制

    {

    return UIInterfaceOrientationMaskLandscape;

    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation // ios6以前控制方向

    {

    return toInterfaceOrientation == (UIInterfaceOrientationLandscapeLeft|UIInterfaceOrientationLandscapeRight);

    }

    5.自定义打印函数

    #ifdef DEBUG

    #define JKLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__)

    #else

    #define JKLog(...)

    #endif

    6.添加导航栏之后设置约束

    当控制器被包裹UINavigationController,之后在其中添加的视图会被导航栏遮挡,那么我们该如何做到不被遮挡呢?

    第一,在控制器的添加其他视图之前,先添加一个UIScrollView,然后把其它view加到UIScrollView上面

    UIScrollView*scrollView = [[UIScrollViewalloc] initWithFrame:kScreen_Bounds];

    [self.view addSubview:scrollView];

    UIButton*btn = [[UIButtonalloc] initWithFrame:(CGRect){0,0, kScreen_Width,64}];

    [scrollView addSubview:btn];

    原因分析:

    UIScrollView本身没有任何移动,而是将UIScrollView中所有子视图下移64px,这个偏移的直接作用对象是UIScrollView的contentOffset,而实际的作用原理是改变其自身的坐标系统,也就是bounds。对于UIScrollView而言,UIScrollView.frame定义UIScrollView在其所在的坐标系统中的位置,而bounds是UIScrollView在自身坐标系统中的位置,frame定义UIScrollView在(0,0)位置,而同样的位置在UIScrollView自身的坐标系统中的坐标是(0, -64), 也就意味着NavigationBar正下方最左边位置为UIScrollView自身坐标系统的(0, 0)位置。所以,往UIScrollView中添加子视图,默认将NavigationBar下方左上角作为“原点”

    第二, topLayoutGuide,也就是通过顶部约束的方式。

    topLayoutGuide属性表示不希望被透明的状态栏或导航栏遮挡的内容范围的最高位置。这个属性的值是它的length属性的值(topLayoutGuide.length),这个值可能由当前的ViewController或这个ViewController所属的NavigationController或TabBarController决定,有如下情况:

    一个独立的ViewController,不包含于任何其他的ViewController。如果状态栏可见,topLayoutGuide表示状态栏的底部,否则表示这个ViewController的上边缘。包含于其他ViewController的ViewController不对这个属性起决定作用,而是由容器ViewController决定这个属性的含义:

    1.如果导航栏(Navigation Bar)可见,topLayoutGuide表示导航栏的底部。

    2.如果状态栏可见,topLayoutGuide表示状态栏的底部。

    3.如果都不可见,表示ViewController的上边缘。

    第三,如果导航栏不透明,那么位于UINavigationController的栈中的UIViewController的view的frame将会更新为(0, 64, ScreenWidth, ScreenHeight-64).

    如何来实现导航栏的不透明呢?

    显示设置transcluent属性

    1.self.navigationController.navigationBar.translucent =NO;

    2.为navigationBar设置背景图片

    [self.navigationController.navigationBar setBackgroundImage:[UIImageimageNamed:"image"] forBarMetrics:UIBarMetricsDefault];

    7.设置导航栏

    去掉导航栏下划线,如果想把下划线加回来 只需要把相应值设置为nil即可

        [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];    [self.navigationController.navigationBar setShadowImage:[UIImage new]];

    设置导航栏背景色:

    self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];

    设置导航栏标题颜色

    UIColor* color = [UIColor whiteColor];

     NSDictionary* dict=[NSDictionary dictionaryWithObject:color forKey:NSForegroundColorAttributeName];    self.navigationController.navigationBar.titleTextAttributes= dict;

    设置导航栏完全透明,就像被隐藏起来了

        self.navigationController.navigationBar.translucent = YES;

        self.navigationController.navigationBar.barTintColor = [UIColor clearColor];

        [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

        [self.navigationController.navigationBar setShadowImage:[UIImage new]];

    8.获取手机连接的wifi

    倒入头文件:

    <SystemConfiguration/CaptiveNetwork.h>

    编写代码:

    +(NSString*)getConnectedWifiName{

        NSString*wifiName =nil;

        NSArray *array = (NSArray *)CFBridgingRelease(CNCopySupportedInterfaces());

        for(NSString*string in array) {

            NSDictionary *info = (NSDictionary*)CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)string));

            if(info && info.count) {

                wifiName  =  info[(NSString *)CFBridgingRelease(kCNNetworkInfoKeySSID )];

            }

        }

        return wifiName;

    }

    9.设置两个lable之间的约束

    两个水平平行的lable 通过设置他们之间的间距来让两个lable 动态调整自己的宽度。设两个label从左到右为A和B,那么问题来了,当A和B的宽度都非常大,如何设置一个label显示完全,而第二个label显示省略号呢?

    比如我们设置A显示完全,B会被A挤压而无法显示完全。这个时候可以通过设置A的抗压缩约束属性“Content Compression Resistance”来完成,如果我们需要将A的内容显示完,那么我们将A的content Compression Resistance 设置大一些:

    [A setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];

    关于这个约束的具体解释可以参考这篇文章:https://www.jianshu.com/p/f83fa37fdd46

    10.获取NSString 的字节长度

        uint8_t buffer[1024];

        memcpy(buffer, [str UTF8String],1024);

        int length = (int)(strlen((constchar*)buffer));

    11.如何把导航栏设置为透明,并且去掉导航栏的下划线,这样导航栏里面的rootviewcontroller的view沾满整个屏幕

        self.navigationController.navigationBar.translucent = YES;

        self.navigationController.navigationBar.barTintColor = [UIColor clearColor];

        [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

        [self.navigationController.navigationBar setShadowImage:[UIImage new]];

    12判断真机和模拟器

    //0真机,1模拟器

    #if TARGET_IPHONE_SIMULATOR

    #define SIMULATOR1

    #elif TARGET_OS_IPHONE

    #define SIMULATOR0

    #endif

    相关文章

      网友评论

          本文标题:IOS 设置tips

          本文链接:https://www.haomeiwen.com/subject/yuuofxtx.html