2011-11-16 86 views
0

當用戶觸摸我的UIButton子類時,我希望該按鈕向外擴展大小。但是,當我在touchDown事件中操作按鈕的框架時,什麼都不會發生。 touchDown事件正在被調用,我可以改變其他屬性,如顏色,但不是框架。在iPhone中觸摸時展開UIButton

這是怎麼回事?

- (id)initWithFrame:(CGRect)frame {  
    self = [super initWithFrame:frame]; 

    if (self) {   
     [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; 
    } 

    return self; 
} 

- (void)touchDown:(id)sender { 
    self.frame = CGRectInset(self.frame, -20, -20); 
} 

編輯:按鈕嵌套深視圖體系內的,但每個具有上海華clipsToBounds = NO

回答

0

的問題是,我的上海華實現layoutSubviews每一次我更新自己的幀重置我的子視圖幀。

0

你可以試試,你有這樣的事情,而不是self.frame在着陸方法上面:

#define EXPAND_BY 5.0 
[self setBounds:CGRectMake(-EXPAND_BY, -EXPAND_BY, 
       self.bounds.size.width + EXPAND_BY * 2, 
       self.bounds.size.height + EXPAND_BY * 2)]; 

只要確保把邊界回來了,否則你的按鈕將不斷擴大。

+0

看一看CGRectInset(CGRect矩形,CGFloat dx,CGFloat dy),一點清潔劑。只需使用dx和dy的負數即可展開。 http://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CGGeometry/Reference/reference.html#//apple_ref/c/func/CGRectInset –

1

,而不是改變的框架,這樣做:

self.transform = CGAffineTransformMakeScale (0.8, 0.8); 
+0

嘿Dancreek,我試過這個,但它只是縮放按鈕內的內容。實際的按鈕尺寸不受影響。 – jimj

+0

你確定嗎?仿射變換會影響整個按鈕。 – Dancreek

+0

你是對的。它會影響整個按鈕,但請參閱我的答案。 – jimj