• 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];
          }
      }


       

    9. UItableView 中或是其superview 中有 tap 事件时 tableView 不响应 tableVeiw:didSelectedRowAtIndex: 方法
    10.  
  • 相关阅读:
    API从网站中解放出来,也许会带来web3.0
    ASP.NET中MD5和SHA1加密的几种方法
    搜狐博客推出开放平台 1月3日举办开发者论坛
    Open Source PDF Libraries in C#
    .Net线程常见问题和误解解答集锦
    降低车辆油耗的十大不变法门
    知己知彼,百战不殆管理软件这个行业
    求职指南:英文求职简历十大忌讳
    .net中实现运行时从字符串动态创建对象
    用 .NET 开发的轻量级 UI 测试自动化.NET教程,.NET Framework
  • 原文地址:https://www.cnblogs.com/liyufeng2013/p/4024383.html
Copyright © 2020-2023  润新知