【发布时间】:2023-03-08 03:55:01
【问题描述】:
我已经从
实现了手绘教程http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_freehand-drawing/.
我需要在我的视图控制器中调用它的- (void)drawBitmap;- (void)drawBitmapGreen; 方法来更改按钮操作的颜色。我做了类似下面的事情。
#import <UIKit/UIKit.h>
#import "checklistController.h"
@interface SmoothedBIView : UIView
@property(nonatomic,assign) checklistController *trnsferColor;
- (void)drawBitmapGreen;
@end
@implementation SmoothedBIView
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self drawBitmapred];
[self drawBitmapGreen];
[self setNeedsDisplay];
[path removeAllPoints];
ctr = 0;
}
- (void)drawBitmapGreen
{
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);
if (!incrementalImage) // first time; paint background white
{
UIBezierPath *rectpath = [UIBezierPath bezierPathWithRect:self.bounds];
[[UIColor clearColor] setFill];
[rectpath fill];
}
[incrementalImage drawAtPoint:CGPointZero];
[[UIColor greenColor] setStroke];
[path stroke];
incrementalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//SmoothedBIView.trnsferColor = self;
}
...
@interface checklistController : UIViewController
@property(nonatomic,strong) IBOutlet UIView *vPaintPreview; //SmoothedBIview outlet for hidden and unhidden property.
@property(nonatomic,assign) SmoothedBIview *SBIView;
-(IBAction)editvImage;
-(IBAction)RedSketch;
-(IBAction)GreenSketch;
更新代码
@implementation file
-(IBAction)GreenSketch
{
SmoothedBIView *SBIview = [[SmoothedBIView alloc] init];
[SBIview drawBitmapGreen];
}
我在这里做错了什么?
【问题讨论】:
-
查看一个视图,将您的类分配给它,使其属性,然后使用该属性调用其方法
-
你为什么这样使用 (
SmoothedBIView *SBIview = self;)? -
@ML:我在一个网页链接中看到了这种方法。是的,这是错误的并且导致代码崩溃:(
-
我已更新按钮操作代码。但这并没有给我想要的结果。
-
这是错误的 OOP 设计。你可以挑鼻子,也可以挑朋友。但是你不能挖你朋友的鼻子。在另一个控制器的视图上调用方法会耦合您的代码并增加维护成本。
标签: iphone ios objective-c uiview uiviewcontroller