iOS 实用小知识

1.给button设置圆角

button.clipsToBounds=YES;
button.layer.cornerRadius=30;//这里的30是你想设置的圆角大小      
[button.layer setBorderWidth:0.5];//设置按钮分割线
[button.layer setBorderColor:[UIColor grayColor].CGColor];//分割线颜色

2.cell分割线从图片下方开始

cell.separatorInset = UIEdgeInsetsZero;

3.cell点击后选中的效果消失
在选中的代理方法中加入以下代码即可

[tableView deselectRowAtIndexPath:indexPath animated:YES];

4.键盘弹出和消失时相应改变输入框的高度(view里面有个tabbleView)

//监听键盘的弹出状态,整个view进行商上移
    [[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillChangeFrameNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
        //键盘的Y值
        CGFloat endY = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
        //视图上移后的Y值
        CGFloat temY = endY - self.view.bounds.size.height;
        
        //视图的frame
        self.view.frame = CGRectMake(0, temY, self.view.bounds.size.width, self.view.bounds.size.height);
        [UIView animateWithDuration:[note.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue] animations:^{
            [self.view setNeedsLayout];
        }];
    }];

//在tabbleview代理方法中让view不再改变,不编辑状态
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.view endEditing:YES];
}

5.降低屏幕的亮度
[[UIScreen mainScreen] setBrightness: value];//value:value就是屏幕的亮度值 这个值介于0和1之间
注:另外 这个方法 会即时刷新 无需手动刷新 但这个方法是调整整个手机界面的亮度的 并不仅仅是某个app的亮度 也就是说这个亮度就是在你完全退出这个app后还是会保持的 所以当我们不需要这个亮度继续保持的时候 我们需要在app的代理方法里做些处理 :

//这个方法会在app失去激活状态的时候调用  比如说程序进入后台

- (void)applicationWillResignActive:(UIApplication *)application {

    [[UIScreen mainScreen] setBrightness: 0.5];//0.5是自己设定认为比较合适的亮度值

}
//获取当前屏幕的亮度:

CGFloat *currentLight = [[UIScreen mainScreen] brightness];

 另外,屏幕的亮度调节只能在真机上看到效果 在模拟器上看不到效果

6.tabbleView自动滚动到底部

//滚动到底部
- (void)scrollToBottom
{
    [_chatView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
}

7.有时候我们并不知道承载label的大小,因为上面的文字多少我们不能确定。这样我们就需要根据文字的多少来计算这个label的大小,从而设置合适的Frame。

CGSize textContentSize = [chat.textContent boundingRectWithSize:CGSizeMake(textMaxW, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:TextFont} context:nil].size;

这里需要知道label的宽度和字体的大小。希望对大家有所帮助。

8.根据story board来加载控制器

// 1.获取当前的StoryBoard面板  
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];  
  
// 2.通过标识符找到对应的页面  
UIViewController *vc = [storyBoard instantiateViewControllerWithIdentifier:@"ID"];  

9.改变cell选中状态对勾的颜色 UITableViewCellAccessoryCheckmark
cell.tintColor = mainColor;//改变选中对勾的颜色

10.原生cell固定图片的大小

 CGSize itemSize = CGSizeMake(40, 40);
 UIGraphicsBeginImageContextWithOptions(itemSize, NO, UIScreen.mainScreen.scale);
 CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
 [cell.imageView.image drawInRect:imageRect];
 cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

11.获取当前页面的VC

- (UIViewController *)topViewController {
    UIViewController *resultVC;
    resultVC = [self _topViewController:[[UIApplication sharedApplication].keyWindow rootViewController]];
    while (resultVC.presentedViewController) {
        resultVC = [self _topViewController:resultVC.presentedViewController];
    }
    return resultVC;
}

- (UIViewController *)_topViewController:(UIViewController *)vc {
    if ([vc isKindOfClass:[UINavigationController class]]) {
        return [self _topViewController:[(UINavigationController *)vc topViewController]];
    } else if ([vc isKindOfClass:[UITabBarController class]]) {
        return [self _topViewController:[(UITabBarController *)vc selectedViewController]];
    } else {
        return vc;
    }
    return nil;
}
//使用
    UIViewController * topViewController = [self topViewController];

你可能感兴趣的:(iOS 实用小知识)