iOS--小技巧

2017-08-24  本文已影响0人  彬至睢阳

navigationBar变为纯透明

//第一种方法----导航栏纯透明-要写在UINavigationController控制器或其子类

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

//去掉导航栏底部的黑线

self.navigationBar.shadowImage = [UIImage new];

tabBar变为纯透明---要写在UITabBarController控制器或其子类

//第一种方法----导航栏纯透明

[self.tabBar setBackgroundImage:[UIImage new]];

//去掉导航栏底部的黑线

self.tabBar.shadowImage = [UIImage new];

navigationBar根据滑动距离,其渐变色的实现

- (void)viewDidLoad {

[super viewDidLoad];

self.automaticallyAdjustsScrollViewInsets = NO;

UIScrollView* scrollView = [[UIScrollView alloc]init];

[self.view addSubview:scrollView];

scrollView.frame = CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, 120);

scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 360);

scrollView.backgroundColor = [UIColor yellowColor];

scrollView.delegate = self;

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

第一种方法

//    CGFloat offsetToShow = 200.0;

//    CGFloat alpha = 1 - (offsetToShow -scrollView.contentOffset.y)/offsetToShow;

//    [[self.navigationController.navigationBar subviews]objectAtIndex:0].alpha = alpha;

第二种方法

CGFloat offsetToShow = 200.0;

CGFloat alpha = 1 - (offsetToShow -scrollView.contentOffset.y)/offsetToShow;

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

[self.navigationController.navigationBar setBackgroundImage:[self imageWithColor:[[UIColor orangeColor]colorWithAlphaComponent:alpha]] forBarMetrics:UIBarMetricsDefault];

}

//

#pragma mark----生成一张纯色的图片

- (UIImage *)imageWithColor:(UIColor *)color{

CGRect rect = CGRectMake(0.0f, 0.0, 1.0, 1.0);

UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [color CGColor]);

CGContextFillRect(context, rect);

UIImage* image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndPDFContext();

return image;

}

如何改变navigationItem的BarButtonItem位置:

一般情况下,右边的item会和屏幕右侧保持一段距离 。可以通过添加一个负值宽度的固定间距的item来解决,也可以改变宽度实现不同的间隔

UIImage* image = [[UIImage imageNamed:@"tabbar_life"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

//宽度为负数的固定间距的系统item

UIBarButtonItem* rightNegativeSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

[rightNegativeSpace setWidth:-15];//靠近右边界

UIBarButtonItem *rightBtnItem1 = [[UIBarButtonItem alloc]initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(rightButtonItemClicked:)];

self.navigationItem.rightBarButtonItems = @[rightNegativeSpace,rightBtnItem1];

UIImage 占用内存大小

UIImage* image = [UIImage imageNamed:@"tabbar_user"];

NSUInteger size = CGImageGetHeight(image.CGImage) * CGImageGetBytesPerRow(image.CGImage);

取上整与取下整

//floor(x),有时候也写做Floor(x),其功能是“下取整”,即取不大于x的最大整数

double x = 3.14;

//floor(x)为3;

double y = 9.9999;

//    floor(y)为9

// ceil函数的作用是求不小于给定实数的最小整数。

//    ceil(x)为4

//  ceil(y)为10

防止scrollView手势覆盖侧滑手势

[scrollView.panGestureRecognizerrequireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];

UITextField每四位加一个空格,实现代理

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

// 四位加一个空格

if ([string isEqualToString:@""])

{

// 删除字符

if ((textField.text.length - 2) % 5 == 0)

{

textField.text = [textField.text substringToIndex:textField.text.length - 1];

}

return YES;

}

else

{

if (textField.text.length % 5 == 0)

{

textField.text = [NSString stringWithFormat:@"%@ ", textField.text];

}

}

return YES;

}

两种方法删除NSUserDefaults所有记录

//方法一

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];

[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

//方法二

- (void)resetDefaults

{

NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];

NSDictionary * dict = [defs dictionaryRepresentation];

for (id key in dict)

{

[defs removeObjectForKey:key];

}

[defs synchronize];

}

+ (BOOL)checkIsChinese:(NSString *)string

{

for (int i=0;i<string.length; i++)

unichar ch = [string characterAtIndex:i];

if (0x4E00 <= ch  && ch <= 0x9FA5)

{

return YES;

}

}

return NO;

}

NSArray 快速求总和 最大值 最小值 和 平均值

NSArray *array = [NSArray arrayWithObjects:@"2.0", @"2.3", @"3.0", @"4.0", @"10", nil];

CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];

CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];

CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];

CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];

NSLog(@"%f\n%f\n%f\n%f",sum,avg,max,min);

关于内存泄漏的注意点

在使用图片资源的时候,少使用imageNamed:方法去获取使用频次不高的图片资源。因为使用imageNamed:加载的图片资源会一直存在内存里面,对内存的浪费也是巨大的。

上一篇下一篇

猜你喜欢

热点阅读