Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
uinavigationController左按钮框架问题ios6和IOS7_Ios_Iphone_Objective C_Ios6_Ios7 - Fatal编程技术网

uinavigationController左按钮框架问题ios6和IOS7

uinavigationController左按钮框架问题ios6和IOS7,ios,iphone,objective-c,ios6,ios7,Ios,Iphone,Objective C,Ios6,Ios7,问题出在ios7,ios6还可以,我正在处理xcode 5 UIImage *backButtonBackgroundImg = [UIImage imageNamed:@"menu.png"]; backButton.frame = CGRectMake(0.0f, 0.0f,backButtonBackgroundImg.size.width, backButtonBackgroundImg.size.height); [backButton setImage:backButtonBack

问题出在ios7,ios6还可以,我正在处理xcode 5

 UIImage *backButtonBackgroundImg = [UIImage imageNamed:@"menu.png"];
backButton.frame = CGRectMake(0.0f, 0.0f,backButtonBackgroundImg.size.width, backButtonBackgroundImg.size.height);
[backButton setImage:backButtonBackgroundImg forState:UIControlStateNormal];
[backButton addTarget:self.revealViewController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
[backButton setBackgroundColor:[UIColor clearColor]];
backButton.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];


我也遇到过类似的问题。我不知道为什么会发生这种情况,但我已经解决了这个问题。请尝试以下代码:

#define IS_IOS_7_OR_LATER() ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
if (IS_IOS_7_OR_LATER())
{
   backButton.imageEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);
}

这应该对你有帮助。干杯

我也遇到过类似的问题。我不知道为什么会发生这种情况,但我已经解决了这个问题。请尝试以下代码:

#define IS_IOS_7_OR_LATER() ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
if (IS_IOS_7_OR_LATER())
{
   backButton.imageEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);
}
这应该对你有帮助。干杯

原因是什么

您可以使用LeftBarButtonims属性指定要显示在工具栏左侧的按钮和视图,但导航控制器仅在有可用空间时才显示这些按钮


所以你可以使用uibarbuttonite,这很容易解决。为什么要使用UIButton

你的按钮框应该换了

 NSLog(@"button frame %@",NSStringFromCGRect(backButton.frame));
在iOS 6中

按钮框{5,43},{28,18}

在iOS 7中

按钮框{16,43},{28,18}

原因是什么

您可以使用LeftBarButtonims属性指定要显示在工具栏左侧的按钮和视图,但导航控制器仅在有可用空间时才显示这些按钮


所以你可以使用uibarbuttonite,这很容易解决。为什么要使用UIButton

你的按钮框应该换了

 NSLog(@"button frame %@",NSStringFromCGRect(backButton.frame));
在iOS 6中

按钮框{5,43},{28,18}

在iOS 7中


按钮框{16,43},{28,18}

问题在哪里?@rckoenes查看两个菜单图标。位置有偏差,可以使用uibarbuttonite轻松解决。为什么要使用UIButton?问题在哪里?@rckoenes可以看到两个菜单图标。位置有偏差,可以使用uibarbuttonite轻松解决。为什么要使用UIButton请不要使用
systemVersion
检测iOS版本,而是使用Foundation版本
if(floor(NSFoundationVersionNumber)谢谢,但是使用系统版本有什么问题吗?请检查我的答案,了解为什么会发生这样的情况:hanku这么多Shabib它真的有效:)@Shabib我在我的文章中写了一个“你永远不应该检查系统版本”。另外,苹果建议您使用系统版本检查的基础检查状态。请不要使用“代码>系统版本< /代码>检测IOS版本,但使用基础版本。code>if(floor(NSFoundationVersionNumber)谢谢,但是使用系统版本有什么问题吗?请检查我的答案,了解为什么会发生这样的情况:hanku这么多Shabib它真的有效:)@Shabib我在我的文章中写了一个“你永远不应该检查系统版本”。另外,苹果建议使用系统版本检查的基础检查状态。