ios UI实现技巧

  1. statusBar 移动位置
    NSString *key = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x61, 0x72} length:9] encoding:NSASCIIStringEncoding];
    
      key = @"statusBar";//一样的效果
    
       id object = [UIApplication sharedApplication];
    
       UIView *statusBar;
    
       if ([object respondsToSelector:NSSelectorFromString(key)]) {
    
           statusBar = [object valueForKey:key];
    
       }
    
       statusBar.transform = CGAffineTransformMakeTranslation(self.paneView.frame.origin.x, self.paneView.frame.origin.y);

     

  2. tabBar 自定义的图标
    if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    
                        UIImage *icon = [[UIImage imageNamed:@"jinghua-selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
                        UIImage *unIcon = [[UIImage imageNamed:@"jinghua"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
                        [nc.tabBarItem setFinishedSelectedImage:icon withFinishedUnselectedImage:unIcon];
    
                    } else {
    
                        [nc.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"jinghua-selected"] withFinishedUnselectedImage:[UIImage imageNamed:@"jinghua"]];
    
                    }
    
                    [nc.tabBarItem setTitle:NSLocalizedString(@"精华", nil)];

     

  3. tabBarItem 自定义颜色
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
    
                                                           [UIColor colorWithWhite:113./255 alpha:1], UITextAttributeTextColor, nil]
    
                                                 forState:UIControlStateNormal];
    
    
    
        //Item选中状态颜色
    
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
    
                                                           [UIColor colorWithWhite:56./255 alpha:1], UITextAttributeTextColor, nil]
    
                                                 forState:UIControlStateSelected];

     

  4. 扩展点击区域
    #import <objc/runtime.h>
    
    @implementation UIControl (userInteractoinEdgeInsets)
    
    static char topNameKey;
    
    static char rightNameKey;
    
    static char bottomNameKey;
    
    static char leftNameKey;
    
    
    
    -(void)setUserInteractionEdgeInsets:(UIEdgeInsets)edgeInsets{
    
        objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:edgeInsets.top], OBJC_ASSOCIATION_COPY_NONATOMIC);
    
        objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:edgeInsets.right], OBJC_ASSOCIATION_COPY_NONATOMIC);
    
        objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:edgeInsets.bottom], OBJC_ASSOCIATION_COPY_NONATOMIC);
    
        objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:edgeInsets.left], OBJC_ASSOCIATION_COPY_NONATOMIC);
    
    }
    
    
    
    - (CGRect)enlargedRect
    
    {
    
        NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);
    
        NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);
    
        NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);
    
        NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);
    
        if (topEdge && rightEdge && bottomEdge && leftEdge)
    
        {
    
            return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,
    
                              self.bounds.origin.y - topEdge.floatValue,
    
                              self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,
    
                              self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);
    
        }
    
        else
    
        {
    
            return self.bounds;
    
        }
    
    }
    
    
    
    - (UIView*)hitTest:(CGPoint) point withEvent:(UIEvent*) event
    
    {
    
        CGRect rect = [self enlargedRect];
    
        if (CGRectEqualToRect(rect, self.bounds))
    
        {
    
            return [super hitTest:point withEvent:event];
    
        }
    
        return CGRectContainsPoint(rect, point) ? self : nil;
    
    }
    
    
    
    @end

     

  5. tabBarController 动态添加删除
    @implementation UITabBarController (dynamic)
    
    -(void)deleteChildViewController:(UIViewController*)controller{
    
        if ([self.viewControllers containsObject:controller]){
    
            NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.viewControllers];
    
            [viewControllers removeObject:controller];
    
            self.viewControllers = [NSArray arrayWithArray:viewControllers];
    
        }
    
    }
    
    
    
    -(void)insertChildViewController:(UIViewController*)controller atIndex:(NSInteger)index{
    
        if (index >=0 && index <=self.viewControllers.count && ![self.viewControllers containsObject:controller]) {
    
            NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.viewControllers];
    
            if (!viewControllers) {
    
                viewControllers = [NSMutableArray array];
    
            }
    
            [viewControllers insertObject:controller atIndex:index];
    
            self.viewControllers = [NSArray arrayWithArray:viewControllers];
    
        }
    
    }
    
    @end

     

  6. navigationBar 自定义
    [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, nil]];
    
    
    
        if ([[UIDevice currentDevice].systemVersion floatValue]<7.0) {
    
            [self.navigationBar setTintColor:[UIColor colorWithRed:0.0 green:194./255 blue:196./255 alpha:1]];
    
        }else{
    
            [self.navigationBar setBarTintColor:[UIColor colorWithRed:0.0 green:194./255 blue:196./255 alpha:1]];
    
        }

     

  7. 本地语言修改
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:language, nil]
    
                                                  forKey:@"AppleLanguages"];
    
    
    
        [[NSUserDefaults standardUserDefaults] synchronize];

     

  8. UITableView控制表格线
    -(void)viewDidLayoutSubviews
    
    {
    
        if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    
            [self.tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
    
        }
    
        
    
        if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    
            [self.tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];
    
        }
    
    }
    
    
    
    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    
    {
    
        if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    
            [cell setSeparatorInset:UIEdgeInsetsZero];
    
        }
    
        
    
        if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    
            [cell setLayoutMargins:UIEdgeInsetsZero];
    
        }
    
    }

你可能感兴趣的:(ios)