五个按钮保持等距圆周旋转

2023-11-30

我想在半径为 100 的圆(以 (120,120) 为中心的圆,实际上是正方形视图的中心,即 240*240)的圆周上旋转五个按钮。是否可以这样做,与按钮进行交互它们是旋转的且外观正确。

我努力了 '

x =  round(cx + redious * cos(angl));
y =  round(cy - redious * sin(angl));   

NSString *X=[NSString stringWithFormat:@"%f",x];
[xval addObject:[NSString stringWithFormat:@"%@",X]];
NSString *Y=[NSString stringWithFormat:@"%f",y];
[yval addObject:[NSString stringWithFormat:@"%@",Y]];'

计算点并且:

map.frame= CGRectMake([[fqx objectAtIndex:counter1]intValue],[[fqy objectAtIndex:counter1]intValue], 72, 37);   
website.frame= CGRectMake([[fqx objectAtIndex:counter2]intValue],[[fqy objectAtIndex:counter2]intValue], 72, 37);   
share.frame= CGRectMake([[fqx objectAtIndex:counter3]intValue],[[fqy objectAtIndex:counter3]intValue], 72, 37); 
slideShow.frame= CGRectMake([[fqx objectAtIndex:counter4]intValue],[[fqy objectAtIndex:counter4]intValue], 72, 37);' 

旋转但它会生成奇怪的路径..以三角形的方式.. ('地图','分享','幻灯片','网站') 是我的按钮..:P


这太可爱了,不容错过,所以就在这里。这段代码仅限于一个按钮旋转,但我怀疑您很难将其扩展为多个按钮(提示:使用一个 CADisplayLink 并同时旋转所有按钮)。

- (void)setupRotatingButtons
{
    // call this method once; make sure "self.view" is not nil or the button 
    // won't appear. the below variables are needed in the @interface.
    // center: the center of rotation
    // radius: the radius
    // time:   a CGFloat that determines where in the cycle the button is located at
    //         (note: it will keep increasing indefinitely; you need to use 
    //         modulus to find a meaningful value for the current position, if
    //         needed)
    // speed:  the speed of the rotation, where 2 * M_PI is 1 lap a second
    // b:      the UIButton
    center = CGPointMake(100, 100);
    radius = 100;
    time = 0;
    speed = 2 * M_PI; // <-- will rotate CW 360 degrees per second (1 "lap"/s)

    b = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    b.titleLabel.text = @"Hi";
    b.frame = CGRectMake(0.f, 0.f, 100, 50);
    // we get the center set right before we add subview, to avoid glitch at start
    [self continueCircling:nil]; 
    [self.view addSubview:b];
    [self.view bringSubviewToFront:b];
    CADisplayLink *dl = [CADisplayLink displayLinkWithTarget:self 
        selector:@selector(continueCircling:)];
    [dl addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}

我们还需要实际的“continueCircling:”方法,它很简单:

- (void)continueCircling:(CADisplayLink *)dl
{
    time += speed * dl.duration;
    b.center = CGPointMake(center.x + radius * cosf(time), 
                           center.y + radius * sinf(time));
}

我确信还有其他更漂亮的方法可以解决这个问题,但以上方法至少有效。 :)

编辑:我忘了提及,您需要添加 QuartzCore 框架和

#import <QuartzCore/QuartzCore.h> 

对于 CADisplayLink。

编辑 2:找到 PI 常数(M_PI),因此将 3.1415 替换为该值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

五个按钮保持等距圆周旋转 的相关文章

  • 当我从我转向的视图控制器返回时,为什么我的 UITableView 的格式完全出错了?

    我有一个UITableView使用自定义单元格 其中有一些标签可以动态决定单元格的高度 当我点击一个单元格并转到一个新的视图控制器时 返回后所有单元格的格式完全混乱 我无法弄清楚是什么导致了它 这是细胞通常的样子 我对它们设置了一些非常基本
  • 滑动删除不起作用

    滑动删除功能在我的表格视图中不起作用 我已经在导航栏中实现了 commitEditingStyle 委托和编辑按钮 因此 当用户单击编辑按钮时 删除和添加按钮会相应显示 但是 在滑动时 删除按钮不会出现 并且似乎它无法将滑动识别为对 set
  • 您是否标记 UIView 或将它们保留为属性?

    这主要是一个风格问题 但自从我开始为 iPhone 编程以来 我一直很好奇其他人的想法是什么 当您的 iPhone 应用程序中有一个 UIView 并且需要在应用程序的其他位置访问它时 通常在视图控制器中的另一个函数中 您是否喜欢用整数标记
  • 最小的 iOS 蓝牙管理器示例

    我一直在构建一个最小的示例 用于使用 iOS 5 0 中的 BluetoothManager 私有框架来检测附近的蓝牙设备 使用此问题中找到的答案 寻找触手可及的通用蓝牙设备 https stackoverflow com question
  • 如何禁用 UITableView 中某些行的删除操作?

    我知道使用setEditing 启用UITableView的编辑模式 但我更喜欢禁用某些特定行的操作 启用其他行 是否可以 Thanks interdev 实施the tableView canEditRowAtIndexPath meth
  • 如何在 NSMutableArray 中实现“按值分组”?

    我正在使用 NSMutableArray 我想像在 SQL 中那样按日期获取值group by log date logMuArray log currenttime 4 30pm log date 11 12 2011 log durat
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • 如何知道用户何时更改设置包

    我让用户在 iPhone 的设置区域中更改他们的设置 在下一次网络同步期间 我想将用户更改发送到服务器 但前提是做出改变 但是我如何知道用户何时在设置区域中进行了更改 如果可以的话 我想避免选择总是发送信息 无论是否更改 或者首先从服务器获
  • 打乱 NSMutableArray 而不重复并显示在 UIButton 中

    在我看来 我有 12 个按钮 一个数组包含 6 个名称 我想在其中打印数组名称UIButton标题 这是我的代码 texts NSMutableArray alloc initWithObjects 1 2 3 4 5 6 nil UIBu
  • 如何替换已弃用的方法dispatch_get_current_queue()? [复制]

    这个问题在这里已经有答案了 我正在 iOS 5 中使用 xmppframework 开发一个聊天应用程序 它工作得很好 但我将 Xcode 更新到 4 5 1 将 iOS 5 更新到 iOS 6 将 Mac OS 更新到 10 7 5 但由
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • Parse.com 从相关 PFObject 获取 PFUser

    我正在将照片保存为 PFObject 解析 并使用 PFUser currentUser 用户 ID 作为其键之一 我想在表格视图中显示照片以及该 PFUser 的详细信息 但是当我尝试获取用户时 PFUser user self phot
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • 在 iphone/ipad 选项卡之间共享 NSManagedObjectContext 和其他服务类

    我很乐意构建一个基于 Core Data 选项卡的 iPad 应用程序 我在我的应用程序委托类中使用以下内容将 NSManagedObjectContext 传递到我的根视图 BOOL application UIApplication a
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 覆盖层不与 UITableView 一起滚动 - iOS

    我有一个 UITableView 类 它使用以下方法在转到下一个屏幕时调用加载覆盖 问题是这个加载屏幕不随列表滚动 所以如果你滚动一点并单击某些东西 加载屏幕不会显示 因为它位于顶部 如何让加载屏幕始终保持在 UITableView 的顶部
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • UIPanGestureRecognizer 对坐标的限制

    我在主 UIView 中添加了一个子视图 称为panel 并且我向其中添加了gestureRecognizer 因为我希望它只能在Y轴上拖动并且只能在某些限制下 即160 300 超过300它不能拖动 我以这种方式实现了手势处理 IBAct

随机推荐

  • MySQL 中的 BULK INSERT 问题

    我在执行批量插入时遇到以下 SQL 命令错误 BULK INSERT libra faculty FROM d faculty csv WITH FIELDTERMINATOR ROWTERMINATOR n 这是错误消息 ERROR 10
  • 我可以将文件添加到本地 Git 存储库但不将其推送到远程吗

    我有许多大型视频文件 我不想将其推送到远程 但我确实想将它们添加到本地存储库 有点像远程版本 gitignore file 那可能吗 更具体地说 我正在开发一个多媒体项目 一个文件夹包含项目元数据文件 它是一个 Screenflow 项目
  • ggplot 中的反向日期时间(POSIXct 数据)轴

    我正在尝试使用 ggplot 创建 POSIXct 时间图 并且想反转轴 但正在努力使其工作 我一直在使用scale y datetime 因为在我的实际应用程序中 控制该轴上的中断非常重要 这是我的问题的一个例子 首先是正常排序 然后是我
  • 获取 Android 设备的永久唯一 ID

    我有一个应用程序 我想在其中使用唯一 ID 来识别设备 我尝试了多种解决方案 但在手机重置后唯一 ID 发生了变化 如 ANDROID ID 我使用了下面的 StackOverflow 链接 但现在不可用 Android 设备有唯一的 ID
  • Matlab加载库错误

    我打算将OpenCV 1 1版本和Matlab2011一起使用 该程序使用调用来加载库 但是 它返回一个错误 gt In loadlibrary at 347 In Untitled at 4 Error using loadlibrary
  • 在 Java 中将二进制输入流读入单个字节数组

    文档说不应该使用available 确定尺寸的方法InputStream 我怎样才能阅读一篇文章的全部内容InputStream到字节数组中 InputStream in assuming already present byte data
  • ActionBarCompat 菜单项未显示[重复]

    这个问题在这里已经有答案了 这是我的general xml file menu menu
  • 在 ruby​​ on Rails 中提交表单时显示结果数据,无需刷新页面

    我对 ruby on Rails 很陌生 我遇到了一个问题 我有一个主题列表 在此列表下方有一个用于添加主题的表格 我正在尝试添加一个主题而不刷新页面 并将该主题显示在主题列表的正下方 新添加的主题正在插入数据库 但如果不刷新页面 它不会显
  • TypeScript 1.5:ES6 模块默认导入 CommonJS 'export ='(.d.ts 唯一问题?)[重复]

    这个问题在这里已经有答案了 我遇到了以下问题 import moment from moment moment本身是一个默认 CommonJS 导出的函数 如此处编码https github com borisyankov Definite
  • Chrome 在没有任何用户交互的情况下立即消除确认()提示

    我们网站的一些用户报告说confirm对话框出现 但立即消失 就好像它们被自动关闭一样 这似乎只影响 Chrome 而不影响其他浏览器 甚至 Chromium 搜索类似问题发现很多人都在抱怨confirm里面的对话onbeforeunloa
  • NSMutableDictionary setObject:forKey: 无法添加密钥

    我确信我在尝试编写的一个小型iPhone程序中遗漏了一些东西 但是代码很简单并且编译时没有任何错误 所以我无法看出错误在哪里 我设置了一个 NSMutableDictionary 来存储学生的属性 每个属性都有一个唯一的键 在头文件中 我声
  • 如何自定义 git 的合并提交消息?

    每次进行合并时 我都需要生成合并提交 并且我希望它不仅仅是所有提交的摘要 我的问题是如何格式化 git fmt merge msg 或决定此自动消息的因素 我可以在提交后通过修改并使用 git log pretty format 手动执行此
  • Jetty '{servlet}/{parameter}' url 路由

    我使用的是码头9 0 3 如何将 www myweb com servlet parameter 等 URL 映射到给定的 servlet 和参数 例如 URL client 12312 将路由到 clientServlet 及其doGet
  • 如何解决返回对象的映射中的待处理承诺?

    这将解决所有承诺 const promises files map filename gt getPdfToPrint output outputDirectory filename replace const res await Prom
  • 查找mysql中整数的排名[重复]

    这个问题在这里已经有答案了 可能的重复 Mysql排名函数 我有以下国家 地区表 country clicks 0 222 66 34 175 1000 45 650 我如何获得 45 个国家 地区的排名 在本例中为 2 订购country
  • 在 driver=new ChromeDriver(); 行上获取“InitationTargetException”异常;

    我正在打开 Chrome 浏览器 并收到异常 InvocationTargetException 几天前代码运行正常 这是我的代码 System setProperty webdriver chrome driver D Automatio
  • 获取数组的所有组合

    我目前正在尝试创建一个函数来获取数组值的所有可能组合 我想出了一个非函数版本 但它仅限于 3 个值 所以我试图用它来创建一个函数 使其变得更强大Dynamic 我尝试搜索 但找不到我想要做的 powershell 示例 我可以找到 PHP
  • 如何从java中的JSONObject获取所有键/子键?

    这是我的 JSONObject per page 3 total 12 data color 98B2D1 year 2000 name cerulean id 1 pantone value 15 4020 color C74375 ye
  • 堆栈中的动态数组?

    它是否正确 这是用 g 3 4 成功编译的 int main int x 12 char pz x 这是所有其他问题的组合答案 你现在的代码是not标准C 它is标准C99 这是因为 C99 允许您以这种方式动态声明数组 澄清一下 这也是标
  • 五个按钮保持等距圆周旋转

    我想在半径为 100 的圆 以 120 120 为中心的圆 实际上是正方形视图的中心 即 240 240 的圆周上旋转五个按钮 是否可以这样做 与按钮进行交互它们是旋转的且外观正确 我努力了 x round cx redious cos a