我试图根据不同的字符串长度计算UILabel的高度.
func calculateContentHeight() -> CGFloat{
var maxLabelSize: CGSize = CGSizeMake(frame.size.width - 48, CGFloat(9999))
var contentNSString = contentText as NSString
var expectedLabelSize = contentNSString.boundingRectWithSize(maxLabelSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFontOfSize(16.0)], context: nil)
print("\(expectedLabelSize)")
return expectedLabelSize.size.height
}
Run Code Online (Sandbox Code Playgroud)
以上是我用来确定高度但不起作用的当前功能.我非常感谢能得到的任何帮助.我会在Swift中给出答案而不是Objective C.
我需要找到的原因是,在iPad上,UIPickerView在横向方向上具有与在纵向方向相同的高度.在iPhone上它是不同的.iPad编程指南为UIDevice引入了一个"成语"值:
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// iPad
}
else
{
// iPhone
}
Run Code Online (Sandbox Code Playgroud)
你在iPad(3.2)但不是iPhone(3.1.3)时工作正常 - 所以看起来还需要有一个ifdef来有条件地编译那个支票,比如:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
#endif
Run Code Online (Sandbox Code Playgroud)
对我而言,开始看起来非常笨拙.什么是更好的方式?
当我升级我的xcode版本时,我遇到了一个问题.我使用单元测试,现在当我尝试导入SenTestingKit(#import <SenTestingKit/SenTestingKit.h>)时,我得到了这个错误:SenTestingKit/SenTestingKit.h: No such file or directory.
我查看了我的构建设置,并且我有以下配置选项:
== Linking ==
Other Linker Flags: -framework Foundation -framework SenTestingKit -framework UIKit
Prebinding: No
== Search Paths ==
Debug Configutation: "/iphonesimulator4.0/Developer/Library/Frameworks" "/Xcode4/Library/Frameworks"
Run Code Online (Sandbox Code Playgroud)
我已经检查了/Xcode4/Library/Frameworks,SenTestingKit.framework/目录就在那里.
那我错过了什么?
我不明白为什么这段代码不起作用.
foreach (DataRow dataRow in dataTable.Rows)
{
if (true)
{
dataRow.Delete();
}
}
Run Code Online (Sandbox Code Playgroud) 在一个小团队中,每个人都在编写项目一段时间,我想鼓励一些不同的想法,让人们增加他们的iOS知识,以及在日常活动中获得更多变化.我不是在寻找涉及井盖的面试问题,也不是关于drawRect:是否是UIView或UIViewController的一部分的非常具体的问题.我正在寻找更多关于/sf/ask/89798131/的问题 - 这里有很多问题和很多很棒的信息.我投票了.
我正在考虑每周发送一个这样的主题,然后通过一些例子在本周末讨论它.也许在轮流的基础上分配一个简短的演示文稿,这样有人可以完成关于该主题的10分钟演示,奖励等等 - 然后当涉及该主题的某些任务出现时,我们可能没有专家,但我们至少有有人知道从哪里开始寻找答案.也许是希望根据这个练习找到更多.
stackoverflow,虽然它有"很棒的问题",有很多不太好的东西,而且每天都会大量滚动.在按照投票排序的iPhone标记的问题中,我看到的问题很少.我当然会在这里进一步研究一些排名靠前的问题,但这些是人们不得不提出的问题,不一定是其他人可能从中受益最多的问题.
"程序员"周围有很多练习,但这些练习并非所需.我希望这是iPhone特有的.我们来自不同的背景,都是不错的程序员.
那么 - 您认为值得了解的iPhone开发有哪些内容?那些事情可以用一个问题的形式表达出来,让一个有进取心的程序员得到满意的答案吗?是什么让你停下来思考,拯救了你的日子,把你推向另一个有趣和/或有利可图的方向,增加了你的知识,或者只是让你觉得自己找到了答案?
对于完全适合动画组方法的动画效果,如Brad Larson的答案所示,我需要动画根据输入继续进行.具体地说是检测到的触摸的触摸和位置.它很容易处理touchesMoved:并为每次触摸设置元素的位置,但它不像核心动画方法那样平滑.
想象一下在沟槽轨道上的大理石.我想把大理石沿着一个方向或另一个方向以任何速度推到任何位置.动画必须做类似的事情,沿着路径移动视觉元素以响应触摸.CAKeyframeAnimation具有完全相同的路径位,但似乎总是希望基于时间过去的帧到帧的过渡,而不是基于任何其他因素,并且在一个方向上.
1月31日更新 - 感谢所有回复到目前为止,但没有一个真正解决问题.我有一个圆形菜单被拖动以选择一个选项.所有这些都需要一起移动,我通过使用一个应用了旋转变换的视图并将逆旋转变换应用于其子视图来解决它,因此图标都以适当的摩天轮方向旋转.当图标沿着略微卵形的路径动画时,它看起来确实更好......大理石描述试图弄清楚我正在尝试做什么.更好的想法可能是想象磁铁可以排斥所有在凹槽中移动的东西 - 移动一个并且它的邻居也可以移动但不一定在拖动的磁铁随着路径弯曲的方向移动.
现在问题是跟随用一个圆创建的简单路径之一,但我真的想知道如何沿任意路径动画对象,仅通过触摸控制位置而不涉及速度或方向的计算.
我正在尝试构建自定义键盘,它就像一个表情符号键盘,但键盘的数据来自json文件.在解析了这个json文件并获取数据之后,如何让自定义键盘使用它并在键盘视图中显示,就像内置的表情符号键盘一样?现在,我按照应用程序扩展键盘:自定义键盘指南,这里只有一小部分信息.有关于如何在线创建自定义表情符号键盘的任何教程或指南吗?我正在尝试的当前代码如下:
class KeyboardViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
var error: NSError?
let yanFile = NSBundle.mainBundle().pathForResource("yan", ofType: "json")
let yanData = NSData(contentsOfFile: yanFile) as NSData
let yanDict = NSJSONSerialization.JSONObjectWithData(yanData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
println("dict: \(yanDict)") //print nothing in console
// Perform custom UI setup here
self.nextKeyboardButton = UIButton.buttonWithType(.System) as UIButton
self.nextKeyboardButton.setTitle(NSLocalizedString("Next Keyboard", comment: "Title for 'Next Keyboard' button"), forState: .Normal)
}
}
Run Code Online (Sandbox Code Playgroud)
json如下:
{
"list":
[
{
"tag": "laugh",
"yan":
[
"o(*???)????",
"(/???/)",
"?(o???)?"
]
},
{ …Run Code Online (Sandbox Code Playgroud) 在使用LLVM的Xcode 4之前,这未经注意到了编译器.条件中的赋值是完全有意的,也是一个Cocoa成语.
选择了LLVM编译器的Xcode 4永远不会抱怨,而不仅仅是在编译时,只要你输入它就会出现黄色警告图标.将警告视为错误而忽略警告似乎不是一个好主意.将分配移出括号会浪费空间.必须为每个新项目用pragma关闭此警告将变得乏味.
你是怎么处理它的?新的成语是什么?
我经常会得到模拟图像,用于定义iPhone应用程序的外观.这些可以来自与项目一样多的不同方法,有时候是balsamiq甚至手绘,有时候是Photoshop.有一点很常见的是通常指定的条形色调,以匹配某些公司品牌或整体应用程序设计.
如果我在应用程序中打开其中一个设计图像并使用绘图滴管工具获取颜色的RGB值,那么有许多地方可以做到这一点,从包含按钮下边缘的最暗区域到最近的最轻区域.酒吧的顶部.我无法找到一个地方来采样编程结果与模型匹配的颜色,在某些方面总是错误导致我眯着眼睛试图调整一个或多个颜色值的两个图像,因此它们匹配得足够好.
给出一个客户想象导航栏应该如何显示*的示例,如何确定应用于条形tintColor属性的正确UIColor?
*忽略包含彩虹效果,误用渐变和其他幻想的模型.沿中心线匹配颜色和亮度就足够了.这至少是一个可辩护的立场 - "你要求的不是iOS的运作方式!"
是否可以通过动画更改色调以获得更平滑的效果?
这对我不起作用:
[UIView beginAnimations:nil context:nil];
[self.navigationController.navigationBar setTintColor:[UIColor greenColor]];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
我不确定是否有可能使用原生苹果组件,因为我猜他们将使用CG来生成渐变...只是想在我开始构建自己的解决方案之前找出...
干杯们:)
iphone tint uinavigationbar uinavigationcontroller tintcolor