- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个应用程序,我需要一个包含许多图像的图库。我想要做的是,当用户点击/单击任何图像时,它应该将该图像旋转 90 度,并且如果用户将任何图像拖动到任何其他图像的顶部,那么这些图像应该交换它们的位置(或者我们可以说交换彼此放置)。
解释:
A B C
D E F
假设上面是我画廊的图片,那么如果用户将图像 A 拖到图像 E 之上,那么画廊应该是这样的
E B C
D A F
我正在使用 UICollectionView 制作我的画廊。这是我到目前为止所做的。
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageArray = [NSArray arrayWithObjects:@"angry_birds_cake.jpg", @"creme_brelee.jpg", @"egg_benedict.jpg", @"full_breakfast.jpg", @"green_tea.jpg", @"ham_and_cheese_panini.jpg", nil];
[self.collectionView registerClass:[ClosetsCell class] forCellWithReuseIdentifier:@"ClosetsCell"];
[self.collectionView setPagingEnabled:YES];
// Configure layout
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:CGSizeMake(100, 100)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[self.collectionView setCollectionViewLayout:flowLayout];
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [self.imageArray count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell identifier
static NSString *cellIdentifier = @"ClosetsCell";
ClosetsCell *cell = (ClosetsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:[self.imageArray objectAtIndex:indexPath.row]];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checked.png"]];
// Return the cell
return cell;
}
-(CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 1;
}
-(CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 4;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"ClosetsCell";
ClosetsCell *cell = (ClosetsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
printf("Selected View index=%d",indexPath.row);
cell.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);
}
但我认为 CGAffineTransformMakeRotation 不适用于我的案例。
最佳答案
就轮换而言,以下是实现此目的的方法:
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI / 2.0);
/* If you want an animation
[UIView beginAnimations: @"" context: NULL];
[UIView setAnimationDuration: 0.3];
*/
cell.imageView.transform = CGAffineTransformConcat(cell.transform, rotation);
/*[UIView commitAnimations];*/
CGAffineTransformMakeRotation
参数是角度,您可以按照自己的方式旋转。 M_PI/2.0 表示向左旋转,M_PI/-2.0 向右旋转并且角度为 0 将使您回到纵向。如果您的实现想要在单击单元格时来回旋转,您可以实现如下所示:
CGAffineTransform leftRotation = CGAffineTransformMakeRotation(M_PI / 2.0);
CGAffineTransform portraitRotation = CGAffineTransformMakeRotation(0.0);
if (CGAffineTransformEqualToTransform(leftRotation, cell.imageView.transform)){
cell.imageView.transform = CGAffineTransformConcat(cell.transform, portraitRotation);
}
else if (CGAffineTransformEqualToTransform(portraitRotation, cell.imageView.transform)){
cell.imageView.transform = CGAffineTransformConcat(cell.transform, leftRotation);
}
现在对于你的第二个问题,切换单元格,我从未使用过 UICollectionViews 但我认为你应该研究 - (void)moveItemAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath
当拖动结束时(通过检查拖动开始和拖动结束的 indexPath)。
根据 Apple documentation这是用于处理 UI 操作的方法。
Use this method to reorganize existing data items. You might do this when you rearrange the items within your data source object or in response to user interactions with the collection view.
关于ios - 如何在触摸时旋转图像并将图像拖到另一个图像上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803120/
我该怎么做 touch R 中的文件(即更新其修改时间而不更改其内容)?我正在寻找一个跨平台的内置(或打包)等效于: system2("touch", file_name) 最佳答案 我找到了 an
我想在 android 中实现 body 部位选择。我的要求是,当我点击特定部分时,图像应用程序应该能够识别 body 部位并且所选部分的颜色应该改变。附上示例图像以供引用。 如有任何想法或建议,我们
我需要将3D模型加载到我的应用程序中(不是游戏,它没有任何区别),并检测用户何时触摸此模型的特定部分以采取不同的操作。 我怎样才能做到这一点?可能吗? 最佳答案 我不熟悉Rajawali,但GitHu
似乎连续触摸总是被它起源的控件捕获。是否有标准方法将触摸/手势传递给当前触摸结束的控件? 最佳答案 控件显示在 UIView 对象内部的屏幕上。 iOS 使用第一响应者的概念来处理 UIView 对象
我有一个 UIScrollView 实例,允许用户放大/缩小。我已经根据文档实现了一个委托(delegate)来处理这个问题。但是,我想知道用户触摸 ScrollView 的位置(相对于 Scroll
我正在创建一款射击游戏,您可以触摸屏幕,玩家可以射击。我遇到的问题是,当你触摸屏幕并按住它并拖动它时,它会快速射击。处理这个问题的最佳方法是什么? 我希望玩家能够按住手指并以稳定的速度射击,而手指向上
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typ
这是我从触摸事件中获得的返回数据。明显缺少任何有用的触摸 X/Y 坐标 ( https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/ch
因此,我有一个屏幕,其中包含 0 到 6 个通过 XML 包含的相同用户界面组件。类似这样的东西: ...等等 每个包含的 UI 都是我重复使用的几个小部件和自定义组件的集
我希望能够更改文件的修改日期以便在 Web 应用程序中使用。目前我直接在命令行上测试这个。在我的 Mac 上工作正常,但是当我在 Linux 服务器上执行此操作时出现错误。 命令:/bin/touch
概念问题: 我在使用 touches 时遇到了一个非常简单的问题属性,自动更新依赖模型的时间戳;它正确地这样做了,但也应用了全局范围。 有什么办法可以关闭这个功能吗?或专门询问自动 touches忽略
我很难在一个简单的等距 Sprite Kit 游戏中实现点击处理。 我有一个包含多个 Tile 对象(SKSpriteNode)的 map (SKNode)的游戏场景(SKScene)。 这是 map
有没有办法在触摸事件后恢复 Flexslider 幻灯片的自动播放?现在看来,一旦我滑动导航,幻灯片就会停止...... 最佳答案 FLEXISLIDER 2 更新 resume()事件不再存在,正确
有些游戏有一些小图片作为 Sprite ,可以通过触摸来移动。如果 Sprite 是较大的图片,触摸是很正常的。我们可以使用函数CGRectContainsPoint检查 Sprite 。但是当 Sp
我有一个 View 覆盖到 iPhone 的相机 View 上。在此 View 中,我有一些 uibuttons,它们显示的位置取决于加速度计/指南针的值。当用户在 View 内触摸但没有在 uibu
我有一个 UIView 和一个 UIWebView。 UIWebView 是 UIView 的 subview 。 UIWebView 包含 YouTube 视频,并设置为让视频适合 UIWebVie
我是通过 XCode 使用 SDK 版本 5.0 进行 iOS 开发的新手。在我的应用程序中,我需要在按下按钮时更改按钮的标题。 假设在正常状态下它是“未推送”的。我所需要的是,当我按下按钮时,按钮标
我需要防止我的网络应用程序中的水平滚动。我尝试在 touchmove 事件上使用 PreventDefault(),但它也阻止垂直滚动。 有什么想法吗?^^ 我的尝试: $(document)
对于完全适合动画组方法的动画效果,如Brad Larson's answer here所示,我需要动画根据输入进行。特别是触摸和检测到的触摸的位置。处理 TouchMoved: 并为每次触摸设置元素的
我在屏幕上散布了一系列硬币。我想在触摸硬币时添加声音。 private Music coinSound; 在 show() 中: coinSound=assetManager.get(Assets.c
我是一名优秀的程序员,十分优秀!