iOS11 导航栏按钮出现点击触发不灵敏(触发面积变小)
来源:互联网 发布:淘宝新店怎么推广 编辑:程序博客网 时间:2024/05/16 04:40
导航栏,是个很难相处的东西。这次,iOS11继续改动了导航栏按钮的一些图层。。可以打开Xcode图层看看,这里先直接上代码了,以后再研究研究。
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, BarButtonViewPosition) {
BarButtonViewPositionLeft,
BarButtonViewPositionRight
};
@interface BarButtonView : UIView
@property (nonatomic,assign)BarButtonViewPosition position;
@end
#import "BarButtonView.h"
@interface BarButtonView ()
{
BOOL applied;
}
@end
@implementation BarButtonView
- (void)layoutSubviews
{
[superlayoutSubviews];
if (applied || [[[UIDevicecurrentDevice]systemVersion]doubleValue] <11)
{
return;
}
// Find the _UIButtonBarStackView containing this view, which is a UIStackView, up to the UINavigationBar
UIView *view = self;
while (![view isKindOfClass:[UINavigationBar class]] && [view superview] != nil)
{
view = [view superview];
if ([view isKindOfClass:[UIStackView class]] && [view superview] != nil)
{
if (self.position == BarButtonViewPositionLeft)
{
[view.superviewaddConstraint:[NSLayoutConstraintconstraintWithItem:viewattribute:NSLayoutAttributeLeadingrelatedBy:NSLayoutRelationEqualtoItem:view.superviewattribute:NSLayoutAttributeLeadingmultiplier:1.0constant:8.0]];
applied = YES;
}
elseif (self.position ==BarButtonViewPositionRight)
{
[view.superviewaddConstraint:[NSLayoutConstraintconstraintWithItem:viewattribute:NSLayoutAttributeTrailingrelatedBy:NSLayoutRelationEqualtoItem:view.superviewattribute:NSLayoutAttributeTrailingmultiplier:1.0constant:-8.0]];
applied = YES;
}
break;
}
}
}
@end
引用:- (void)setLeftBarButtonView:(UIView *)view
{
if ([[[UIDevicecurrentDevice]systemVersion]doubleValue] >=11)
{
BarButtonView *barBtnView = [[BarButtonViewalloc]initWithFrame:view.frame];
[barBtnView setPosition:BarButtonViewPositionLeft];
[barBtnView addSubview:view];
[self.navigationItemsetLeftBarButtonItem:[[UIBarButtonItemalloc]initWithCustomView:barBtnView]];
}
else
{
UIBarButtonItem *space = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:NULL];
[space setWidth:-8];
[self.navigationItemsetLeftBarButtonItems:@[space,[[UIBarButtonItemalloc]initWithCustomView:view]]];
}
}
- (void)setRightBarButtonView:(UIView *)view
{
if ([[[UIDevicecurrentDevice]systemVersion]doubleValue] >=11)
{
BarButtonView *barBtnView = [[BarButtonViewalloc]initWithFrame:view.frame];
[barBtnView setPosition:BarButtonViewPositionRight];
[barBtnView addSubview:view];
[self.navigationItemsetRightBarButtonItem:[[UIBarButtonItemalloc]initWithCustomView:barBtnView]];
}
else
{
UIBarButtonItem *space = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:NULL];
[space setWidth:-8];
[self.navigationItemsetRightBarButtonItems:@[space,[[UIBarButtonItemalloc]initWithCustomView:view]]];
}
}
这里的View就是传给navigationItem的CustomView
点击打开链接- iOS11 导航栏按钮出现点击触发不灵敏(触发面积变小)
- 按钮点击触发哪些事件
- js触发按钮点击事件
- js触发按钮点击事件
- JS触发点击按钮事件
- js触发按钮点击事件
- js触发按钮点击事件
- 按钮无法触发点击事件
- 按钮点击效果不灵敏
- 解决点击回车触发按钮的问题
- 通过代码触发按钮点击事件
- easyui window点击关闭按钮,触发事件
- 模拟JS触发按钮点击功能
- jquery 回车触发按钮点击事件
- WPF利用代码触发按钮点击操作
- UITextField 点击右下角return按钮触发事件
- 代码控制按钮点击事件的触发
- 点击按钮的几种触发方式
- Hbuilder 学习使用中的一些记录
- centos6.9安装python3.6(小白文)
- I2C FPGA实现
- gethostbyname() 函数说明
- 松柏先生:新零售浪潮下,中小电商在哪个层面才有可能胜过大品牌?
- iOS11 导航栏按钮出现点击触发不灵敏(触发面积变小)
- php中文验证码
- 裸机实验之SD卡下载
- 2、数据结构和设计模式(数据结构基础、字符串、设计模式与软件测试)
- 严重: IOException while loading persisted sessions: java.io.EOFException
- jsp测试过滤器执行的顺序
- 安卓基础:Handler, Looper,消息队列,线程及主线程之间的关系
- 023 导数之左导数、右导数;可导必然连续,连续不一定可导
- Mac下配置Gradle的路径