星空网 > 软件开发 > 操作系统

IOS客户端Coding项目记录(五)

1:统一修改导航栏的样式,在 AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  // Override point for customization after application launch.  self.window.backgroundColor = [UIColor whiteColor];    //设置导航条样式  [self customizeInterface];    if ([Login isLogin]) {    [self setupTabViewController];  }else{    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;    [self setupLoginViewController];  }  [self.window makeKeyAndVisible];  return YES;}- (void)customizeInterface {  //设置Nav的背景色和title色  UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];  NSDictionary *textAttributes = nil;  if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {    [navigationBarAppearance setTintColor:[UIColor whiteColor]];//返回按钮的箭头颜色    [[UITextField appearance] setTintColor:[UIColor colorWithHexString:@"0x3bbc79"]];//设置UITextField的光标颜色    [[UITextView appearance] setTintColor:[UIColor colorWithHexString:@"0x3bbc79"]];//设置UITextView的光标颜色    [[UISearchBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithHexString:@"0xe5e5e5"]] forBarPosition:0 barMetrics:UIBarMetricsDefault];    textAttributes = @{              NSFontAttributeName: [UIFont boldSystemFontOfSize:kNavTitleFontSize],              NSForegroundColorAttributeName: [UIColor whiteColor],              };  } else {#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0    [[UISearchBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithHexString:@"0xe5e5e5"]]];    textAttributes = @{              UITextAttributeFont: [UIFont boldSystemFontOfSize:kNavTitleFontSize],              UITextAttributeTextColor: [UIColor whiteColor],              UITextAttributeTextShadowColor: [UIColor clearColor],              UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetZero],              };#endif  }  [navigationBarAppearance setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithHexString:@"0x28303b"]] forBarMetrics:UIBarMetricsDefault];  [navigationBarAppearance setTitleTextAttributes:textAttributes];}其中上面的版本判断:FOUNDATION_EXPORT double NSFoundationVersionNumber;#if TARGET_OS_IPHONE#define NSFoundationVersionNumber_iPhoneOS_2_0  678.24#define NSFoundationVersionNumber_iPhoneOS_2_1 678.26#define NSFoundationVersionNumber_iPhoneOS_2_2 678.29#define NSFoundationVersionNumber_iPhoneOS_3_0 678.47#define NSFoundationVersionNumber_iPhoneOS_3_1 678.51#define NSFoundationVersionNumber_iPhoneOS_3_2 678.60#define NSFoundationVersionNumber_iOS_4_0 751.32#define NSFoundationVersionNumber_iOS_4_1 751.37#define NSFoundationVersionNumber_iOS_4_2 751.49#define NSFoundationVersionNumber_iOS_4_3 751.49#define NSFoundationVersionNumber_iOS_5_0 881.00#define NSFoundationVersionNumber_iOS_5_1 890.10#define NSFoundationVersionNumber_iOS_6_0 992.00#define NSFoundationVersionNumber_iOS_6_1 993.00#define NSFoundationVersionNumber_iOS_7_0 1047.20#define NSFoundationVersionNumber_iOS_7_1 1047.25#endif

 

 2:判断一张view 是否被加载过用 nil == view.superview

    if (nil == view.superview) {   //判断一个view 是否被加载过  如果被加载过,它的superview就不会是nil      CGRect frame = scrollView0.frame;      frame.origin.x = frame.size.width * page;      frame.origin.y = 0;      view.frame = frame;      [scrollView0 addSubview:view];    }

 

 3:百度地图初始化坐标范围

- (void)viewDidLoad {  [super viewDidLoad];    [UIApplication sharedApplication].applicationIconBadgeNumber =15;  _mapView=[[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];  BMKCoordinateRegion region; ////表示范围的结构体  region.center.latitude = 24.27;// 中心中  region.center.longitude = 118.06;  region.span.latitudeDelta = 0.1;//经度范围(设置为0.1表示显示范围为0.2的纬度范围)  region.span.longitudeDelta = 0.1;//纬度范围  [_mapView setRegion:region];  [self.baiduView addSubview:_mapView];}自定义大头针的图片:- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation{  if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {    BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotation"];    newAnnotationView.pinColor = BMKPinAnnotationColorPurple;    newAnnotationView.animatesDrop = YES;// 设置该标注点动画显示    newAnnotationView.image = [UIImage imageNamed:@"iphone"];  //把大头针换成别的图片    return newAnnotationView;  }  return nil;}

 

 4:隐藏键盘

当前视图上有多个uitextfield时,来隐藏键盘, 先遍历视图的所有子视图来 如果是UITextField就将其设为非第一响应 当然,如果要隐藏子视图上的UITextField的话可以进一步判断view的subviews的个数,如果大于1则遍历view的子视图,然后作类似操作//隐藏键盘 当前视图上有多个uitextfieldfor(UIView *view in [self.view subviews]){   if(view is kindofclass:[UITextField Class])  {       [view resignfirstrespond];   }}直接用 [self.view endEditing:NO]直接取消当前Window上的各种view的键盘 [[[UIApplication sharedApplication] keyWindow] endEditing:YES];或者使用如下代码- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(done:)];tapGestureRecognizer.numberOfTapsRequired = 1;[self.view addGestureRecognizer: tapGestureRecognizer];  //只需要点击非文字输入区域就会响应hideKeyBoardreturn YES;}

 

 5:UIView中的坐标转换

// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;// 将rect从view中转换到当前视图中,返回在当前视图中的rect- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;例把UITableViewCell中的subview(btn)的frame转换到 controllerA中// controllerA 中有一个UITableView, UITableView里有多行UITableVieCell,cell上放有一个button// 在controllerA中实现:CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];或CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];// 此rc为btn在controllerA中的rect或当已知btn时:CGRect rc = [btn.superview convertRect:btn.frame toView:self.view];或CGRect rc = [self.view convertRect:btn.frame fromView:btn.superview];比如:CGPoint origin = [self convertPoint:CGPointZero toView:[UIApplication sharedApplication].keyWindow]; 把self的0点坐标系,放到keyWindow的坐标系换算一下,获得一个“绝对的”坐标一个在父控件中的坐标为0,0 其实父控件本来有坐标200,200 通过上面可以获得这个200,200值

 

 6:弹出一个视图,并有一个背影的视图(大体代码)

- (UIView *)myTapBackgroundView{  if (!_myTapBackgroundView) {    _myTapBackgroundView = ({      UIView *view = [[UIView alloc] initWithFrame:kScreen_Bounds];      view.backgroundColor = [UIColor clearColor];      UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeShowing)];      [view addGestureRecognizer:tap];      view;    });  }  return _myTapBackgroundView;}- (UIView *)myContentView{  if (!_myContentView) {    _myContentView = ({      UIView *view = [[UIView alloc] initWithFrame:CGRectZero];      view.backgroundColor = [UIColor whiteColor];      view;    });  }  return _myContentView;}- (void)changeShowing{  [kKeyWindow endEditing:YES];  if (!_myContentView) {//未载入过    [self loadUIElement];  }  CGPoint origin = [self convertPoint:CGPointZero toView:kKeyWindow];  CGFloat contentHeight = self.isShowing? 0: kCodeBranchTagButton_ContentHeight;  if (self.isShowing) {//隐藏    self.enabled = NO;    [UIView animateWithDuration:0.3 animations:^{      self.myTapBackgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0];      self.myContentView.alpha = 0;      self.myContentView.frame = CGRectMake(0, origin.y-contentHeight, kScreen_Width, contentHeight);      self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, DEGREES_TO_RADIANS(180));    } completion:^(BOOL finished) {      [self.myTapBackgroundView removeFromSuperview];      [self.myContentView removeFromSuperview];      self.enabled = YES;      self.isShowing = NO;    }];  }else{//显示    self.myContentView.frame = CGRectMake(0, origin.y, kScreen_Width, 0);    [kKeyWindow addSubview:self.myTapBackgroundView];    [kKeyWindow addSubview:self.myContentView];    self.enabled = NO;    [UIView animateWithDuration:0.3 animations:^{      self.myTapBackgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.2];      self.myContentView.alpha = 1.0;      self.myContentView.frame = CGRectMake(0, origin.y-contentHeight, kScreen_Width, contentHeight);      self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, DEGREES_TO_RADIANS(180));    } completion:^(BOOL finished) {      self.enabled = YES;      self.isShowing = YES;    }];  }}其中:#define kScreen_Bounds [UIScreen mainScreen].bounds#define kKeyWindow [UIApplication sharedApplication].keyWindow

 




原标题:IOS客户端Coding项目记录(五)

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

关税真的让美国更强大了吗?不存在的!:https://www.ikjzd.com/articles/94038
跨境电商“两超多强”局面,谁与争锋?:https://www.ikjzd.com/articles/94039
Wish产品文案优化技巧-优化思路分析:https://www.ikjzd.com/articles/94042
重磅!华为宣布在美国的57家工厂全部撤离!:https://www.ikjzd.com/articles/94043
特雷莎·梅被要求明确“下台时间”,令人心寒!:https://www.ikjzd.com/articles/94044
开拓东南亚跨境市场: Lazada全力以赴!:https://www.ikjzd.com/articles/94045
新喀里多尼亚/new caledonia:https://www.kjdsnews.com/a/1836448.html
美国对13家与俄罗斯相关的加密货币金融科技公司实施制裁:https://www.kjdsnews.com/a/1836449.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流