ios convert objective - UIBarButtonItem: كيف يمكنني العثور على إطاره؟





5 Answers

هذه الطريقة تعمل بشكل أفضل بالنسبة لي:

UIView *targetView = (UIView *)[yourBarButton performSelector:@selector(view)];
CGRect rect = targetView.frame;
swift iswift

لدي زر في شريط الأدوات. كيف يمكنني التقاط إطاره؟ هل لا UIBarButtonItem خاصية frame ؟




باستخدام Swift ، إذا كنت بحاجة إلى العمل في الغالب مع عناصر زر الشريط ، يجب عليك تنفيذ ملحق مثل:

extension UIBarButtonItem {

    var frame: CGRect? {
        guard let view = self.value(forKey: "view") as? UIView else {
            return nil
        }
        return view.frame
    }

}

ثم في الرمز الخاص بك يمكنك الوصول بسهولة:

if let frame = self.navigationItem.rightBarButtonItems?.first?.frame {
    // do whatever with frame            
}



أوفوه ، الكثير من الإجابات الخاطئة في هذا الموضوع. إليك الطريقة الصحيحة للقيام بذلك:

-(CGRect) getBarItemRc :(UIBarButtonItem *)item{
    UIView *view = [item valueForKey:@"view"];
    return [view frame];
}



جرب هذا التنفيذ:

if let barButtonFrame = myBarButtonItem.view?.frame {
    // etc...
}






Related