我是新手,努力制作我的第一款应用。我想通过从UISlider接收值来更改PaintCode生成的(bezierpath)对象(?)的大小。任何人都可以帮助我下面的代码有什么问题,以及如何使它工作?
int heightOfBubble = 120;
- (IBAction)widthOfBubble:(id)sender {
NSLog(@"slider value = %f", self.slider.value);
[slider addTarget:self action:@selector(drawRect:) forControlEvents:UIControlEventValueChanged];
}
- (void)drawRect:(CGRect)rect {
label.text = [NSString stringWithFormat:@"%f", self.slider.value];
NSLog(@"slider value = %f", self.slider.value);
[BubbleText10 drawBubbleButtonWithText2:@"안개비 조명은 하예 흔들리는 내 몸을 감싸고~~ 술에 취에 비틀거리는 하~예 나의 모습 이제는 싫어~ 삐리비립" number:12 numberOfWidth:widthOfBubble numberOfHeight:heightOfBubble condition: NO];
我收到以下错误;
Mar 19 00:55:45 BubbleText03[44457] <Error>: CGContextRestoreGState: invalid context 0x0. Backtrace:
<+[BubbleText10 drawBubbleButtonWithText2:number:numberOfWidth:numberOfHeight:condition:]+4941>
<-[BubbleView drawRect:]+421>
<-[UIApplication sendAction:to:from:forEvent:]+83>
<-[UIControl sendAction:to:forEvent:]+67>
<-[UIControl _sendActionsForEvents:withEvent:]+444>
<-[UISlider endTrackingWithTouch:withEvent:]+255>
<-[UIControl touchesEnded:withEvent:]+620>
<-[UIWindow _sendTouchesForEvent:]+2747>
<-[UIWindow sendEvent:]+4011>
<-[UIApplication sendEvent:]+371>
<__dispatchPreprocessedEventFromEventQueue+3248>
<__handleEventQueue+4879>
<__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
<__CFRunLoopDoSources0+556>
<__CFRunLoopRun+918>
<CFRunLoopRunSpecific+420>
<GSEventRunModal+161>
<UIApplicationMain+159>
<main+111>
<start+1>
非常感谢提前。
答案 0 :(得分:0)
而不是@selector(drawRect:)
使用@selector(setNeedsDisplay)
。
文档:
- (void)drawRect:(CGRect)rect;
...首次显示视图或发生使视图的可见部分无效的事件时,将调用此方法。 您永远不应该直接调用此方法。要使视图的一部分无效,从而导致重绘该部分,请改为调用
setNeedsDisplay
或setNeedsDisplayInRect:
方法。
即使它直接说 并且您没有直接自己调用它,它仍然适用于您的情况。
- PaintCode支持