我想要许多像心形,星形等特殊形状的拼贴... 任何人都可以告诉我如何以编程方式在目标c的iPhone应用程序中执行此操作?如何为iPhone应用程序制作拼贴形状?
回答
如果您几乎没有使用Core Graphics的经验,并且想要以编程方式生成这些形状,我建议您使用名为PaintCode的Mac应用程序。
您可以使用它来绘制形状,并生成相应的Objective-C绘图代码。
使用此代码。这里图片是从PhotoLibrary中挑选出来的,然后用手势将它们移动,缩放等等。我使用所有的手势来帮助你做任何平移,捏和旋转任何你放置的图像。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
imageCollage = [[UIImageView alloc]initWithFrame:CGRectMake(80, 80, 150, 150)];
[imageCollage setUserInteractionEnabled:YES];
imageCollage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
holderView = [[UIView alloc] initWithFrame:CGRectMake(0,0,imageCollage.frame .size.width, imageCollage.frame.size.height)];
holderView.layer.cornerRadius = 6;
holderView.clipsToBounds = YES;
imageview = [[UIImageView alloc] initWithFrame:[holderView frame]];
[imageview setImage:imageCollage.image];
[holderView addSubview:imageview];
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[holderView addGestureRecognizer:pinchRecognizer];
UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
[rotationRecognizer setDelegate:self];
[holderView addGestureRecognizer:rotationRecognizer];
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[holderView addGestureRecognizer:panRecognizer];
DeleteImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 30, 30)];
[DeleteImage setImage:[UIImage imageNamed:@"DeleteRed.png"]];
[holderView addSubview:DeleteImage];
DeleteImage.userInteractionEnabled = YES;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setDelegate:self];
[DeleteImage addGestureRecognizer:tapRecognizer];
[BaseView addSubview:holderView];
[Trash setImage:[UIImage imageNamed:@"12456977871712665073hrum_trash.svg.med.png"] forState:UIControlStateNormal];
}
-(void)scale:(id)sender
{
BaseView.clipsToBounds = YES;
[BaseView bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];
if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
lastScale = 1.0;
return;
}
CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
lastScale = [(UIPinchGestureRecognizer*)sender scale];
}
-(void)rotate:(id)sender
{
[BaseView bringSubviewToFront:[(UIRotationGestureRecognizer*)sender view]];
if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
lastRotation = 0.0;
return;
}
CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation);
[[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform];
lastRotation = [(UIRotationGestureRecognizer*)sender rotation];
}
-(void)move:(id)sender
{
[[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations];
BaseView.clipsToBounds = YES;
[BaseView bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]];
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
firstX = [[sender view] center].x;
firstY = [[sender view] center].y;
}
translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y);
[[sender view] setCenter:translatedPoint];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
CGFloat finalX = translatedPoint.x + (.20*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x);
CGFloat finalY = translatedPoint.y + (.20*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);
if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
if(finalX < 0) {
finalX = 0;
}
else if(finalX > 260) {
finalX = 260;
}
if(finalY < 0) {
finalY = 0;
}
else if(finalY > 416) {
finalY = 416;
}
}
else {
if(finalX < 0) {
finalX = 0;
}
else if(finalX > 416) {
finalX = 260;
}
if(finalY < 0) {
finalY = 0;
}
else if(finalY > 260) {
finalY = 416;
}
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.35];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[[sender view] setCenter:CGPointMake(finalX, finalY)];
[UIView commitAnimations];
}
}
-(void)tapped:(UIGestureRecognizer *)recogniser
{
NSLog(@"%@",recogniser.view);
[Trash setImage:[UIImage imageNamed:@"trash_bin_recycle_quit_terminate_error_cancel_close_exit.png"] forState:UIControlStateNormal];
[[[recogniser view] superview] removeFromSuperview];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return ![gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}
对鳕鱼的任何疑问,请随时问:)...编码快乐..
嘿,我已经实施了它,但从Elcimagepicker获得许多图像后,我怎么能把它放在一起形状像心的形状。我不想旋转或移动该图片。只是想把它们放在一个特殊的形状。在一个形状中显示我的所有照片。 – Pinky
@Pinky你想从之前安排它,还是你希望用户在运行时安排它? – IronManGill
是的,我想将所有选定的图像直接放入选定的形状。不希望用户旋转或移动它。就像我在链接中给出的应用程序一样。 – Pinky
- 1. 如何在vb6应用程序中制作类似于Excel形状的形状
- 2. 如何制作iPhone TimeTable应用程序
- 3. 如何在WinJS中制作拼贴?
- 4. 使用HTML5/JS将图像拼贴实现为'Word'形状
- 5. 如何制作一个没有方形窗体形状的Windows应用程序?
- 6. 如何为iPhone制作媒体播放器应用程序?
- 7. 如何为iPhone应用程序制作平面转换动画
- 8. 如何为iPhone应用程序制作铅笔笔画?
- 9. 从主应用程序拼贴中删除实时拼贴功能
- 10. 如何制作iPhone应用程序并排除iPhone 5?
- 11. 如何绘制在iPhone本机应用程序的图形
- 12. 如何在iphone应用程序中绘制图形?
- 13. 制作iPhone应用程序通用
- 14. 如何在UITextView iPhone应用程序中控制复制,粘贴,全选,定义?
- 15. UIPasteboard粘贴板应用程序iOS iPhone
- 16. 如何制作响应OnRing事件的iPhone应用程序?
- 17. iphone - 制作Wifi列表应用程序
- 18. 制作iPhone应用程序可配置
- 19. 制作iPhone应用程序双语
- 20. 从现有iPhone应用程序制作iPad应用程序?
- 21. 如何使用html和css制作照片拼贴画?
- 22. 如何使用geom_tile在ggplot2中制作相对拼贴大小?
- 23. 如何制作iphone应用程序,如ibeer,imilk,ibug,ibeer
- 24. iPhone:制作箭头形状的UIBarButtonItem
- 25. 如何使用sqlite制作调查问卷iPhone应用程序
- 26. 如何制作适用于iphone 5和4s的应用程序
- 27. 如何将iPhone应用程序转换为iPad应用程序
- 28. 如何将Phonegap应用程序转换为iphone应用程序?
- 29. 如何制作一个网站作为iPhone本机应用程序?
- 30. 定制视图拼图的形状
是,为了使拼贴ULL需要图像,添加这些图像到的UIView,然后做你想....你能否让你的问题更清楚些?你究竟想要什么? – IronManGill
是的,我已经这样做了。谢谢,但你能告诉我如何将所有图像放在一个形状随机位置?我想像这个应用程序的形状拼贴。 http://itunes.apple.com/in/app/shape-collage/id436917115?mt=8 – Pinky
为此,您将不得不使用UIGestures或UITouches,并且应该有多个图像,您可以根据触摸移动把他们放在拼贴画中...我可以解释,但它会很长...难过我解释更多? – IronManGill