前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编码篇-iOS开发中的奇巧小伎

编码篇-iOS开发中的奇巧小伎

作者头像
進无尽
发布2018-09-12 18:12:42
5.3K0
发布2018-09-12 18:12:42
举报
文章被收录于专栏:進无尽的文章進无尽的文章

摘要

最近搜集了自己以前的笔记中的一些小知识点,归为这篇文章,都是亲测有效的奇巧小伎,当你使用到时,你会大呼过瘾的。

  • 1.TableView不显示没内容的Cell
  • 2.百分号的转换
  • 3.禁止手机睡眠
  • 4.跳进app权限设置
  • 5.collectionView的内容小于其宽高的时候是不能滚动的,设置可以滚动:
  • 6.设置navigationBar上的title颜色和大小
  • 7.统一收起键盘
  • 8.导入自定义字体库
  • 9.动态方法的动态执行
  • 10.isKindOfClass和isMemberOfClass的区别
  • 11.Label字体大小
  • 12.为UIView某个角添加圆角
  • 13.将一个view放置在其兄弟视图的最上面、最下面
  • 14.让手机震动一下
  • 15.摇一摇功能
  • 16.修改UISegmentedControl的字体大小
  • 17.获取一个view所属的控制器
  • 18.UIImage和base64互转
  • 19.检查一个rect是否包含一个point
  • 20.UITextView中打开或禁用复制,剪切,选择,全选等功能
  • 21.用stringByReplacingOccurrencesOfString方法去掉空格,实际上只是做了字符替换操作,除了空格还可以替换其它字符,容易思维定势想不起来这个妙用。
  • 22、当使用-performSelector:withObject:withObject:afterDelay:方法时,需要传入多参数问题
  • 23、比较两个CGRect/CGSize/CGPoint是否相等
  • 24、比较两个NSDate相差多少小时
  • 25、播放一张张连续的图片
  • 26、判断两个rect是否有交叉
  • 27、判断一个字符串是否为数字
  • 28、将一个view保存为pdf格式
  • 29、获取当前导航控制器下前一个控制器
  • 30、保存UIImage到本地
  • 31、动画修改label上的文字
  • 32、判断一个view是否为另一个view的子视图,或者是子试图的子试图。
  • 33、获取手机RAM容量
  • 34、在UITextView中显示html文本
  • 35、选中textField或者textView所有文本(我这里以textView为例)
  • 36、隐藏UITextView/UITextField光标
  • 37、当UITextView/UITextField中没有文字时,禁用回车键
  • 38、通知监听APP生命周期
  • 39、获取collectionViewCell在屏幕中的frame
  • 40、UITextField文字周围增加边距
  • 41、比较两个UIImage是否相等**
  • 42、代码方式调整屏幕亮度
  • 43、float数据取整四舍五入
  • 44、让正在滑动的scrollView停止滚动(不是禁止,而是暂时停止滚动)
  • 45、使用xib设置UIView的边框、圆角
  • 46、将一个xib添加到另外一个xib上
  • 47、处理字符串,使其首字母大写
  • 48、获取字符串中的数字
  • 49、自动搜索功能,用户连续输入的时候不搜索,用户停止输入的时候自动搜索(我这里设置的是0.5s,可根据需求更改)
  • 50、某个界面多个事件同时响应引起的问题(比如,两个button同时按push到新界面,两个都会响应,可能导致push重叠)
  • 51、修改tabBar的frame
  • 52、修改键盘背景颜色
  • 53.本来我的statusbar是lightcontent的,结果用UIImagePickerController会导致我的statusbar的样式变成黑色
  • 54.把navigationbar弄成透明的而不是带模糊的效果,(亲测有效)

诸技罗列

1.TableView不显示没内容的Cell

代码语言:javascript
复制
self.tableView.tableFooterView = [[UIView alloc] init];

2.百分号的转换

代码语言:javascript
复制
NSString中需要格式化的字符串中百分号使用%%表示
例如:NSLog(@"%%%@%%",@"hello"),控制台会打印出%hello%。
自己键盘打出的 % 汉字形式下的还是会报警告,并且不会显示出来.把上文的粘贴过去使用吧!

3.禁止手机睡眠

代码语言:javascript
复制
[UIApplication sharedApplication].idleTimerDisabled = YES;

4.跳进app权限设置

代码语言:javascript
复制
// 跳进app设置
if (UIApplicationOpenSettingsURLString != NULL) {
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    [[UIApplication sharedApplication] openURL:url];
}
测试注意:新项目测试,需要请求一下位置权限或者通知权限,才可以跳进自己的app设置里面(必须在info.plist 中设置私有属性的访问权限)
你的应用要提前至少申请了某一个权限,如(通知,定位等)。否则,会引起崩溃。

5.collectionView的内容小于其宽高的时候是不能滚动的,设置可以滚动:

代码语言:javascript
复制
collectionView.alwaysBounceHorizontal = YES;
collectionView.alwaysBounceVertical = YES;

6.设置navigationBar上的title颜色和大小

代码语言:javascript
复制
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor youColor], NSFontAttributeName : [UIFont systemFontOfSize:15]}]

7.统一收起键盘

代码语言:javascript
复制
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

8.导入自定义字体库

代码语言:javascript
复制
1、找到你想用的字体的 ttf 格式,拖入工程
2、在工程的plist中增加一行数组,“Fonts provided by application”
3、为这个key添加一个item,value为你刚才导入的ttf文件名
4、直接使用即可:label.font = [UIFont fontWithName:@"你刚才导入的ttf文件名" size:20.0];

9.动态方法的动态执行

代码语言:javascript
复制
使用以下代码调用即可:
if (! obj) { return; }
SEL selector = NSSelectorFromString(@"aMethod");
IMP imp = [obj methodForSelector:selector];
void (*func)(id, SEL) = (void *)imp;
func(obj, selector);

或者:
SEL selector = NSSelectorFromString(@"aMethod");
((void (*)(id, SEL))[obj methodForSelector:selector])(obj, selector);

10.isKindOfClass和isMemberOfClass的区别

代码语言:javascript
复制
isKindOfClass  可以判断某个对象是否属于某个类,或者这个类的子类。
isMemberOfClass  更加精准,它只能判断这个对象是否是某一个类的实例(不能判断子类)

11.Label字体大小

代码语言:javascript
复制
label.font.pointSize

12.为UIView某个角添加圆角

代码语言:javascript
复制
// 左上角和右下角添加圆角
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(20, 20)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = view.bounds;
maskLayer.path = maskPath.CGPath;
view.layer.mask = maskLayer;

13.将一个view放置在其兄弟视图的最上面、最下面

代码语言:javascript
复制
最上面
[parentView bringSubviewToFront:yourView]
最下面
[parentView sendSubviewToBack:yourView]

14.让手机震动一下

代码语言:javascript
复制
需要导入框架  
#import <AudioToolbox/AudioToolbox.h>
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);

15.摇一摇功能

代码语言:javascript
复制
1、打开摇一摇功能
[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
2、让需要摇动的控制器成为第一响应者
[self becomeFirstResponder];
3、实现以下方法

// 开始摇动
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
// 取消摇动
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
// 摇动结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

16.修改UISegmentedControl的字体大小

代码语言:javascript
复制
[segment setTitleTextAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15.0f]} forState:UIControlStateNormal];

17.获取一个view所属的控制器

代码语言:javascript
复制
// view分类方法
- (UIViewController *)belongViewController {
    for (UIView *next = [self superview]; next; next = next.superview) {
        UIResponder* nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
          return (UIViewController *)nextResponder;
       }
    }
  return nil;
}

18.UIImage和base64互转

代码语言:javascript
复制
 // view分类方法
- (NSString *)encodeToBase64String:(UIImage *)image {
 return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
  NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
  return [UIImage imageWithData:data];
}

19.检查一个rect是否包含一个point

代码语言:javascript
复制
// point是否在rect内
BOOL isContains = CGRectContainsPoint(rect, point);

20.UITextView中打开或禁用复制,剪切,选择,全选等功能

代码语言:javascript
复制
// 继承UITextView重写这个方法
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// 返回NO为禁用,YES为开启
    // 粘贴
    if (action == @selector(paste:)) return NO;
    // 剪切
    if (action == @selector(cut:)) return NO;
    // 复制
    if (action == @selector(copy:)) return NO;
    // 选择
    if (action == @selector(select:)) return NO;
    // 选中全部
    if (action == @selector(selectAll:)) return NO;
    // 删除
    if (action == @selector(delete:)) return NO;
    // 分享
    if (action == @selector(share)) return NO;
    return [super canPerformAction:action withSender:sender];
}

21.用stringByReplacingOccurrencesOfString方法去掉空格,实际上只是做了字符替换操作,除了空格还可以替换其它字符,容易思维定势想不起来这个妙用。

22、当使用-performSelector:withObject:withObject:afterDelay:方法时,需要传入多参数问题

代码语言:javascript
复制
// 方法一、
// 把参数放进一个数组/字典,直接把数组/字典当成一个参数传过去,具体方法实现的地方再解析这个数组/字典
NSArray * array =  [NSArray arrayWithObjects: @"first", @"second", nil];
[self performSelector:@selector(fooFirstInput:) withObject: array afterDelay:15.0];

// 方法二、
// 使用NSInvocation
SEL aSelector = NSSelectorFromString(@"doSoming:argument2:");
    NSInteger argument1 = 10;
    NSString *argument2 = @"argument2";
    if([self respondsToSelector:aSelector]) {
          NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:aSelector]];
        [inv setSelector:aSelector];
        [inv setTarget:self];
        [inv setArgument:&(argument1) atIndex:2];
        [inv setArgument:&(argument2) atIndex:3];
        [inv performSelector:@selector(invoke) withObject:nil afterDelay:15.0];
    }

23、比较两个CGRect/CGSize/CGPoint是否相等

代码语言:javascript
复制
if (CGRectEqualToRect(rect1, rect2)) { // 两个区域相等
    // do some
}
if (CGPointEqualToPoint(point1, point2)) { // 两个点相等
    // do some
}
if (CGSizeEqualToSize(size1, size2)) { // 两个size相等
    // do some
}

24、比较两个NSDate相差多少小时

代码语言:javascript
复制
 NSDate* date1 = someDate;
 NSDate* date2 = someOtherDate;
 NSTimeInterval distanceBetweenDates = [date1 timeIntervalSinceDate:date2];
 double secondsInAnHour = 3600;
// 除以3600是把秒化成小时,除以60得到结果为相差的分钟数
 NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;

25、播放一张张连续的图片

代码语言:javascript
复制
// 加入现在有三张图片分别为animate_1、animate_2、animate_3
// 方法一
  imageView.animationImages = @[[UIImage imageNamed:@"animate_1"], [UIImage imageNamed:@"animate_2"], [UIImage imageNamed:@"animate_3"]];
  imageView.animationDuration = 1.0;
// 方法二
  imageView.image = [UIImage animatedImageNamed:@"animate_" duration:1.0];
// 方法二解释下,这个方法会加载animate_为前缀的,后边0-1024,也就是animate_0、animate_1一直到a

26、判断两个rect是否有交叉

代码语言:javascript
复制
 if (CGRectIntersectsRect(rect1, rect2)) {
}

27、判断一个字符串是否为数字

代码语言:javascript
复制
NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
if ([str rangeOfCharacterFromSet:notDigits].location == NSNotFound)
{   // 是数字
} else{
  // 不是数字
 }

28、将一个view保存为pdf格式

代码语言:javascript
复制
- (void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
  {
      NSMutableData *pdfData = [NSMutableData data];
      UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
      UIGraphicsBeginPDFPage();
      CGContextRef pdfContext = UIGraphicsGetCurrentContext();
      [aView.layer renderInContext:pdfContext];
      UIGraphicsEndPDFContext();

    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
}

29、获取当前导航控制器下前一个控制器

代码语言:javascript
复制
- (UIViewController *)backViewController
{
    NSInteger myIndex = [self.navigationController.viewControllers indexOfObject:self];
    if ( myIndex != 0 && myIndex != NSNotFound ) {
        return [self.navigationController.viewControllers objectAtIndex:myIndex-1];
    } else {
        return nil;
    }
  }

30、保存UIImage到本地

代码语言:javascript
复制
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"];

  [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

31、动画修改label上的文字

代码语言:javascript
复制
// 方法一
CATransition *animation = [CATransition animation];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.type = kCATransitionFade;
animation.duration = 0.75;
[self.label.layer addAnimation:animation forKey:@"kCATransitionFade"];
self.label.text = @"New";

// 方法二
[UIView transitionWithView:self.label
                  duration:0.25f
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    self.label.text = @"Well done!";
                } completion:nil];

// 方法三
[UIView animateWithDuration:1.0
                 animations:^{
                     self.label.alpha = 0.0f;
                     self.label.text = @"newText";
                     self.label.alpha = 1.0f;
                 }];

32、判断一个view是否为另一个view的子视图,或者是子试图的子试图。

代码语言:javascript
复制
// 如果myView是self.view本身,也会返回yes,
BOOL isSubView = [myView isDescendantOfView:self.view];

33、获取手机RAM容量

代码语言:javascript
复制
// 需要导入#import
mach_port_t host_port;
mach_msg_type_number_t host_size;
vm_size_t pagesize;

host_port = mach_host_self();
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
host_page_size(host_port, &pagesize);

vm_statistics_data_t vm_stat;

if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) {
    NSLog(@"Failed to fetch vm statistics");
}

/* Stats in bytes */
natural_t mem_used = (vm_stat.active_count +
                      vm_stat.inactive_count +
                      vm_stat.wire_count) * pagesize;
natural_t mem_free = vm_stat.free_count * pagesize;
natural_t mem_total = mem_used + mem_free;
NSLog(@"已用: %u 可用: %u 总共: %u", mem_used, mem_free, mem_total);

34、在UITextView中显示html文本

代码语言:javascript
复制
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 30, 100, 199)];
textView.backgroundColor = [UIColor redColor];
[self.view addSubview:textView];
NSString *htmlString = @"";
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding] options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes: nil error: nil];
textView.attributedText = attributedString;

35、选中textField或者textView所有文本(我这里以textView为例)

代码语言:javascript
复制
[self.textView setSelectedTextRange:[self.textView textRangeFromPosition:self.textView.beginningOfDocument toPosition:self.textView.endOfDocument]]

36、隐藏UITextView/UITextField光标

代码语言:javascript
复制
textField.tintColor = [UIColor clearColor];

37、当UITextView/UITextField中没有文字时,禁用回车键

代码语言:javascript
复制
textField.enablesReturnKeyAutomatically = YES;

38、通知监听APP生命周期

通知监听APP生命周期

代码语言:javascript
复制
UIApplicationDidEnterBackgroundNotification 应用程序进入后台
UIApplicationWillEnterForegroundNotification 应用程序将要进入前台
UIApplicationDidFinishLaunchingNotification 应用程序完成启动
UIApplicationDidFinishLaunchingNotification 应用程序由挂起变的活跃
UIApplicationWillResignActiveNotification 应用程序挂起(有电话进来或者锁屏)
UIApplicationDidReceiveMemoryWarningNotification 应用程序收到内存警告
UIApplicationDidReceiveMemoryWarningNotification 应用程序终止(后台杀死、手机关机等)
UIApplicationSignificantTimeChangeNotification 当有重大时间改变(凌晨0点,设备时间被修改,时区改变等)
UIApplicationWillChangeStatusBarOrientationNotification 设备方向将要改变
UIApplicationDidChangeStatusBarOrientationNotification 设备方向改变
UIApplicationWillChangeStatusBarFrameNotification 设备状态栏frame将要改变
UIApplicationDidChangeStatusBarFrameNotification 设备状态栏frame改变
UIApplicationBackgroundRefreshStatusDidChangeNotification 应用程序在后台下载内容的状态发生变化
UIApplicationProtectedDataWillBecomeUnavailable 本地受保护的文件被锁定,无法访问
UIApplicationProtectedDataWillBecomeUnavailable 本地受保护的文件可用了

39、获取collectionViewCell在屏幕中的frame 可以用来设计collectionViewCell点击放大缩小到初始位置。

代码语言:javascript
复制
UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:indexPath];
CGRect cellRect = attributes.frame;
CGRect cellFrameInSuperview = [collectionView convertRect:cellRect toView:[cv superview]];

40、UITextField文字周围增加边距

代码语言:javascript
复制
// 子类化UITextField,增加insert属性
@interface WZBTextField : UITextField
@property (nonatomic, assign) UIEdgeInsets insets;
@end

// 在.m文件重写下列方法
- (CGRect)textRectForBounds:(CGRect)bounds {
CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);
if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeUnlessEditing) {
    return [self adjustRectWithWidthRightView:paddedRect];
}
return paddedRect;
}

- (CGRect)placeholderRectForBounds:(CGRect)bounds {
CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);

if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeUnlessEditing) {
    return [self adjustRectWithWidthRightView:paddedRect];
}
return paddedRect;
}

 - (CGRect)editingRectForBounds:(CGRect)bounds {
CGRect paddedRect = UIEdgeInsetsInsetRect(bounds, self.insets);
if (self.rightViewMode == UITextFieldViewModeAlways || self.rightViewMode == UITextFieldViewModeWhileEditing) {
    return [self adjustRectWithWidthRightView:paddedRect];
}
return paddedRect;
}

- (CGRect)adjustRectWithWidthRightView:(CGRect)bounds {
    CGRect paddedRect = bounds;
    paddedRect.size.width -= CGRectGetWidth(self.rightView.frame);

    return paddedRect;
}

41、比较两个UIImage是否相等**

代码语言:javascript
复制
- (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
      NSData *data1 = UIImagePNGRepresentation(image1);
      NSData *data2 = UIImagePNGRepresentation(image2);

      return [data1 isEqual:data2];
}

42、代码方式调整屏幕亮度

代码语言:javascript
复制
// brightness属性值在0-1之间,0代表最小亮度,1代表最大亮度
[[UIScreen mainScreen] setBrightness:0.5];

43、float数据取整四舍五入

代码语言:javascript
复制
CGFloat f = 4.65;
NSLog(@"%d", (int)f);    // 打印结果4

CGFloat f = 4.65;
NSLog(@"%d", (int)round(f));    // 打印结果5

44、让正在滑动的scrollView停止滚动(不是禁止,而是暂时停止滚动)

代码语言:javascript
复制
[scrollView setContentOffset:scrollView.contentOffset animated:NO];

45、使用xib设置UIView的边框、圆角

image

46、将一个xib添加到另外一个xib上

代码语言:javascript
复制
// 假设你的自定义view名字为CustomView,你需要在CustomView.m中重写 `- (instancetype)initWithCoder:(NSCoder *)aDecoder` 方法,代码如下:
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
    [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil] objectAtIndex:0]];
}
return self;
}

将一个xib添加到另外一个xib上

47、处理字符串,使其首字母大写

代码语言:javascript
复制
NSString *str = @"abcdefghijklmn";
NSString *resultStr;
if (str && str.length > 0) {
    resultStr = [str stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[str substringToIndex:1] capitalizedString]];
}
NSLog(@"%@", resultStr);

48、获取字符串中的数字

代码语言:javascript
复制
- (NSString *)getNumberFromStr:(NSString *)str
{
    NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    return [[str componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@""];
}

  NSLog(@"%@", [self getNumberFromStr:@"a0b0c1d2e3f4fda8fa8fad9fsad23"]); // 00123488923

49、自动搜索功能,用户连续输入的时候不搜索,用户停止输入的时候自动搜索(我这里设置的是0.5s,可根据需求更改)

代码语言:javascript
复制
// 输入框文字改变的时候调用
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    // 先取消调用搜索方法
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(searchNewResult) object:nil];
    // 0.5秒后调用搜索方法
    [self performSelector:@selector(searchNewResult) withObject:nil afterDelay:0.5];
}

50、某个界面多个事件同时响应引起的问题(比如,两个button同时按push到新界面,两个都会响应,可能导致push重叠)

代码语言:javascript
复制
// UIView有个属性叫做exclusiveTouch,设置为YES后,其响应事件会和其他view互斥(有其他view事件响应的时候点击它不起作用)
view.exclusiveTouch = YES;

// 一个一个设置太麻烦了,可以全局设置
[[UIView appearance] setExclusiveTouch:YES];

// 或者只设置button
[[UIButton appearance] setExclusiveTouch:YES];

51、修改tabBar的frame

代码语言:javascript
复制
// 子类化UITabBarViewController,我这里以修改tabBar高度为例,重写viewWillLayoutSubviews方法
#import "WZBTabBarViewController.h"

@interface WZBTabBarViewController ()

@end

@implementation WZBTabBarViewController
- (void)viewWillLayoutSubviews {

    CGRect tabFrame = self.tabBar.frame;
    tabFrame.size.height = 100;
    tabFrame.origin.y = self.view.frame.size.height - 100;
    self.tabBar.frame = tabFrame;
}
@end

52、修改键盘背景颜色

代码语言:javascript
复制
// 设置某个键盘颜色
textField.keyboardAppearance = UIKeyboardAppearanceAlert;

// 设置工程中所有键盘颜色
[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceAlert];

53.本来我的statusbar是lightcontent的,结果用UIImagePickerController会导致我的statusbar的样式变成黑色

代码语言:javascript
复制
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}

54.把navigationbar弄成透明的而不是带模糊的效果,(亲测有效)

代码语言:javascript
复制
 [self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                         forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;

小结

后续会持续更新....

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 诸技罗列
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档