iphone - 如何在 ios 中的 UIButtons 上创建线条?

标签 iphone ios uibutton uicollectionview uitouch

我有 8 个 UIButton。现在我想在这些按钮上创建线条。

我试过了,我可以画一条线。请检查我在做什么。

MyDrawingView.h

#import <UIKit/UIKit.h>

@interface MyDrawingView : UIView{

CGPoint fromPoint;
CGPoint toPoint;
UIColor* currentColor;



UIImage *backgroundImage;
}

@property CGPoint fromPoint;
@property CGPoint toPoint;
@property(nonatomic,retain) UIColor* currentColor;

@end



MyDrawingView.m

#import "MyDrawingView.h"

@implementation MyDrawingView

@synthesize fromPoint;
@synthesize toPoint;
@synthesize currentColor;



- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Initialization code

    backgroundImage = [UIImage imageNamed:@"office.jpeg"];
}
return self;
}


- (void)drawRect:(CGRect)rect {

//CGPoint drawingTargetPoint = CGPointMake(100,0);
//[backgroundImage drawAtPoint:drawingTargetPoint];

CGContextRef    context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context,10);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextMoveToPoint(context,fromPoint.x , fromPoint.y);
CGContextAddLineToPoint(context, toPoint.x, toPoint.y);
CGContextStrokePath(context);


}

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch* touchPoint = [touches anyObject];
fromPoint = [touchPoint locationInView:self];
toPoint = [touchPoint locationInView:self];

[self setNeedsDisplay];
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
toPoint=[touch locationInView:self];
[self setNeedsDisplay];
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
toPoint = [touch locationInView:self];
[self setNeedsDisplay];
}

现在在另一个类中我在 viewDidLoad 上使用了 8 个按钮,请检查我在做什么。

-(void)viewDidLoad{

8 UIButtons (8 buttons in one line and 10 pixels gap in X-position after every button)

[self method_Call_drawView];
}




-(void)method_Call_drawView{
v = [[MyDrawingView alloc]initWithFrame:CGRectMake(100,350,400,400)]; 
v.backgroundColor = [UIColor whiteColor];
[v setNeedsDisplay];
[self.view addSubview:v];
}

 .h file
#import <UIKit/UIKit.h>


@class MyDrawingView;
@interface iPad_Level1 : UIViewController{

UIButton *btn1;
UIButton *btn2;
UIButton *btn3;
UIButton *btn4;
UIButton *btn5;
UIButton *btn6;
UIButton *btn7;
UIButton *btn8;
MyDrawingView *v;
}
@property(nonatomic,retain)MyDrawingView *v;
@end

我可以创建 View 并在 View 上画一条线,但我无法触摸 UIButtons 并在其上创建一条线。

无论我点击哪里,我的线条都在增加和减少,但我希望在我的 UIButton 上显示这条线。

请检查我正在尝试做什么 itunes.apple.com/in/app/word-search-puzzles/id609067187?mt=8,检查按钮上的黄线和蓝线。

我们非常欢迎任何想法或建议。

最佳答案

你可以在你想要的按钮之前添加一个 1px 高度的 subview 。

UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, self.view.bounds.size.width, 1)]; // change the 200 to fit your screen
lineView.backgroundColor = [UIColor blackColor];
[self.view addSubview:lineView];

当用户点击按钮时移动这条线使用:

[UIView animateWithDuration:0.5
                              delay:0.5
                            options: UIViewAnimationCurveEaseOut
                         animations:^
         {                 
             CGRect frame = lineView .frame;
             frame.origin.y = 100;   // for move
             frame.size.width = 50; // for re-size
             lineView .frame = frame;
         }
             completion:^(BOOL finished)
         {
             NSLog(@"Completed");
         }
];

关于iphone - 如何在 ios 中的 UIButtons 上创建线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18713112/

相关文章:

ios - 从它的一个 UINavigationControllers 中解散 TabBarController 并从呈现 TabBarController 的地方返回到 Controller

iphone - 连接信用卡读卡器

ios - 无法从 LinkedIn API 获取完整的个人资料详细信息

xcode - 如何更改 titleLabel 字体颜色,Xcode

ios - 在 DST 更改期间添加一个月时 NSDate 丢失和小时?

iphone - iOS 排行榜游戏中心

ios - 如何以编程方式循环更新 UITextField 中的文本

ios - 以编程方式创建 GridView

ios - 如何在导航栏中创建后退按钮

swift - 在 Swift 3 的同一按钮上的图像上方的按钮上显示文本