Iphone 获取UIBarButtonSystemItem的宽度
是否有一种方法可以通过编程方式获取UIBarButtonSystemItem的宽度。对于系统项,“宽度”属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度 iPhone上的值是44,但iPad上的值要大一点,我无法确定。显然,UIBarButtonItem没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttonite的框架 您必须依靠其他方法来查找宽度,因为您发现44是iPhone中editButtonItem的宽度;-) 显然,uibarbuttonite没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttonite的框架Iphone 获取UIBarButtonSystemItem的宽度,iphone,objective-c,ios,uiviewcontroller,uibarbuttonitem,Iphone,Objective C,Ios,Uiviewcontroller,Uibarbuttonitem,是否有一种方法可以通过编程方式获取UIBarButtonSystemItem的宽度。对于系统项,“宽度”属性始终返回0。特别是,我想获得UIViewController的editButtonItem属性的确切宽度 iPhone上的值是44,但iPad上的值要大一点,我无法确定。显然,UIBarButtonItem没有frame属性。由于uibarbuttonite是NSObject的一个直接子类(而NSObject又没有框架),因此不可能从代码(有文档记录的API)中获取uibarbuttoni
您必须依靠其他方法来查找宽度,因为您发现44是iPhone中editButtonItem的宽度;-) UIBarButtonItem有一个属性
width
,但系统按钮通常为0。因此,我通常使用自定义按钮和按钮内的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按钮之间添加灵活的空格。您可以通过NSString的方法-sizeWithFont
计算字符串的宽度。可通过UIBarButtonItem的样式UIBarButtonSystememFlexibleSpace
获得灵活的空间。UIBarButtonItem有一个属性宽度
,但系统按钮通常为0。因此,我通常使用自定义按钮和按钮内的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按钮之间添加灵活的空格。您可以通过NSString的方法-sizeWithFont
计算字符串的宽度。灵活的空间可以通过uiBarButtonim的样式uiBarButtonSystemFlexibleSpace
获得。我从@JoBu1324留下的评论链接中得到了答案
这是我使用的代码
UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"];
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
我从@JoBu1324留下评论的链接中得到了答案 这是我使用的代码
UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"];
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
这里有两种可能性,但我猜任何有效的答案都可能依赖于未记录的API:(注意:我没有测试任何代码)这里有两种可能性,但我猜任何有效的答案都可能依赖于未记录的API:(注:我没有测试任何代码)它必须有某种框架,不管它是否被称为框架;它只是不能通过公共API访问,它必须有某种框架,无论它是否被称为框架;它只是无法通过公共API访问