2012-11-06 6 views
10

यह बटन की पृष्ठभूमि छवि का आकार बदले बिना UIButton की tapable क्षेत्र को बढ़ाने केपृष्ठभूमि छवि के बढ़ते आकार के बिना tapable (मार) के (कस्टम प्रकार) UIButton क्षेत्र में वृद्धि कैसे

मैंने कोशिश की संभव है:

[shareButton setContentEdgeInsets:UIEdgeInsetsMake(top, left, bottom, right)]; 

&

[shareButton setImageEdgeInsets:UIEdgeInsetsMake(top, left, bottom, right)]; 

लेकिन इनमें से कोई भी काम किया।

किसी भी सुझाव कृपया?

उत्तर

14

प्रकार buttonWithType:UIButtonTypeCustom की UIButton करें और इसे करने के लिए एक छोटे आकार की एक छवि आवंटित।

पृष्ठभूमि छवि के रूप में छवि सेट न करें या यह बटन के साथ विकसित होगा। इसे मुख्य छवि के रूप में सेट करें।

उदाहरण के लिए यदि आप टैप करने योग्य क्षेत्र को 64x64 आकार में सेट करना चाहते हैं और आप छवि का आकार 32x32 दिखाना चाहते हैं: बटन का आकार 64x64 होना चाहिए और छवि का आकार 32x32 होना चाहिए।

प्रोग्राम

:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

// use an image with the desired size (for example 32x32) 
[button setImage: [UIImage imageNamed: @"buttonIcon.png"] forState: UIControlStateNormal]; 
// just set the frame of the button (64x64) 
[button setFrame: CGRectMake(xPositionOfMyButton, yPositionOfMyButton, 64, 64)]; 

इंटरफ़ेस बिल्डर:

Interface Builder example

3

उपवर्ग UIButton की superview, और ओवरराइड hitTest: withEvent:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    CGPoint buttonPoint = [self convertPoint:point toView:_button]; 
    if ([_button pointInside:buttonPoint withEvent:event]) { // you may add your requirement here 
     return _button; 
    } 
    return [super hitTest:point withEvent:event]; 
} 
+0

के साथ एक उदाहरण देखते UIButton classing उप अलावा कोई अन्य रास्ता नहीं है? मैन्युअल रूप से मारने वाले क्षेत्र को सेट करने के लिए बटन की कोई विधि या संपत्ति? –

+3

@cishish यह बहुत बुरा है! – devios1

+0

@crishoj यह सच नहीं है, आप बटन उपवर्ग और pointInside ओवरराइड कर सकते हैं। – Andy

3

एक साथ autolayout के साथ डिजाइन दृष्टिकोण (इंटरफ़ेस बिल्डर/दृश्य स्वरूप भाषा) आप की तरह का प्रयोग करें और आवश्यक आकार के साथ UIButton लेआउट । सामग्री के रूप में शीर्षक या छवि सेट करें और टेप करने योग्य क्षेत्र के आकार के साथ एक पारदर्शी छवि का उपयोग पृष्ठभूमि छवि के रूप में करें।

_button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[_button setImage:[UIImage imageNamed:@"contentImage"] forState:UIControlStateNormal]; 
[_button setBackgroundImage:[UIImage imageNamed:@"transparentImage"] forState:UIControlStateNormal]; 

यहाँ _button.layer.borderWidth = 1.

Example http://i59.tinypic.com/wwnt5u.png

संबंधित मुद्दे