关于Swift中的时间转换,我有一个(有点?)基本问题.
我有一个整数,我想转换成小时/分钟/秒.
示例: Int = 27005会给我:
7 Hours 30 Minutes 5 Seconds
Run Code Online (Sandbox Code Playgroud)
我知道如何在PHP中执行此操作,但唉,swift不是PHP :-)
关于如何在swift中实现这一目标的任何提示都太棒了!先感谢您!
我在Xcode 8/iOS 10/Swift 3中遇到Firebase问题.试图让Firebase Analytics全部设置好.但是在iOS10中,控制台会记录来自Firebase的大量WARNING日志.当我在模拟器中运行iOS 9.3时,这些都不会发生.我按照此处所述的确切步骤操作:https://firebase.google.com/docs/analytics/ios/start
这是日志的样子:
<FIRAnalytics/INFO> Firebase Analytics v.3402000 started
<FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled
<FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist
<FIRInstanceID/WARNING> Failed to remove checkin auth credentials from Keychain Error Domain=com.google.iid Code=-34018 "(null)"
<FIRInstanceID/WARNING> Error failed to remove all tokens from keychain Error Domain=com.google.iid Code=-34018 "(null)"
<FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will …Run Code Online (Sandbox Code Playgroud) 刚刚在我的应用程序中收到此崩溃报告.研究过这个问题,它似乎与WebViews打交道?另请阅读它可能涉及Admob.该应用程序很简单; 它不使用Web视图或WebGL,但它确实使用AdMob横幅插页式广告和原生广告.如果这是任何调试帮助.
gpus_ReturnNotPermittedKillClient
glrKillClient
gpusSubmitDataBuffers
SubmitPackets(AGXContextRec*)
Run Code Online (Sandbox Code Playgroud)
造成这次崩溃的原因是什么,以及如何阻止它发生?谢谢.
编辑:
这是崩溃的完整堆栈跟踪.希望这能让你们更容易看到发生了什么?
Thread 4 Crashed:
0 libGPUSupportMercury.dylib 0x00000001989edf94 gpus_ReturnNotPermittedKillClient + 12 (gpui_client_io.c:77)
1 AGXGLDriver 0x000000019d4ad1bc glrKillClient + 464 (agxu_kill_client.cpp:175)
2 libGPUSupportMercury.dylib 0x00000001989eef44 gpusSubmitDataBuffers + 176 (gpui_context.c:602)
3 AGXGLDriver 0x000000019d4ae77c SubmitPackets(AGXContextRec*) + 292 (agxu_gl_command.cpp:93)
4 IOAccelerator 0x000000018b445e28 IOAccelContextFinishResourceSysMem + 64 (IOAccelContextRef.c:591)
5 libGPUSupportMercury.dylib 0x00000001989f35ec gldFinishObject + 128 (gpui_sync.c:104)
6 GLEngine 0x000000019dc3c948 glBufferSubData_Exec + 680 (gl_buffer_object.c:1340)
7 WebCore 0x000000018e869738 WebCore::WebGLRenderingContextBase::bufferSubData(unsigned int, long long, WTF::RefPtr<JSC::ArrayBufferView>&&, int&) + 488 (WebGLRenderingContextBase.cpp:1174)
8 WebCore 0x000000018e357a9c WebCore::jsWebGLRenderingContextBasePrototypeFunctionBufferSubData(JSC::ExecState*) + 1604 (JSWebGLRenderingContextBase.cpp:1165) …Run Code Online (Sandbox Code Playgroud) 在Swift中,是否可以将最大INT值设置为UITextField?
我的用例是我有5个文本字段需要有一个最大的int值.这些值的范围从500到10,000.5个不同的文本字段中的每一个都具有不同的最大值.我不能使用选择器或下拉,因为增量将是1.而UISlider将太难以"擦入"数字.
如果max int值为5,000,则用户无法输入(在数字键盘的键盘类型上)任何高于5000的值.
字符数不起作用,因为如果最大值为500,如果我设置为3个字符,用户可以键入999.
我正在尝试设置Date()应用程序第一次打开的时间。这将在UserDefaults.
我曾经register()在 UserDefault 中保存日期。问题是.. 这个值似乎在每次启动时都会保存,这违背了 UserDefaults.register 的目的。
这是我的代码:
let initialOpen: NSDictionary = ["FirstOpen" : Date()]
UserDefaults.standard.register(defaults: initialOpen as! [String : AnyObject])
let firstOpenDate = UserDefaults.standard.value(forKey: "FirstOpen")
print("First Opened: \(firstOpenDate)")
Run Code Online (Sandbox Code Playgroud)
我在didFinishLaunchingWithOptions.
如何在 UserDefaults 中记录第一次启动应用程序的时间?
我正在尝试从我的应用程序中打开Yelp,其部署目标为8.1
我面临的问题是我的代码在模拟器上没有正确评估.我的设备是iOS 10.3,它在那里工作正常(Yelp打开),但我需要能够检查这是否适用于旧版iOS的模拟器!
let urlStr: String = "yelp://"
let url = URL(string: urlStr)
if UIApplication.shared.canOpenURL(url!) {
print("can open")
if #available(iOS 10.0, *) {
print("10")
UIApplication.shared.open(url!, options: [:], completionHandler: nil)
} else {
print("NOT 10")
UIApplication.shared.openURL(url!)
}
}
else {
// Can not open URL
print("can not open url")
}
Run Code Online (Sandbox Code Playgroud)
在模拟器(iOS 8.1)中,以下打印到控制台:
can open
NOT 10
Run Code Online (Sandbox Code Playgroud)
但是,这是错误的!Yelp没有安装在模拟器上 - 但如果是这样的话,不会print("can not open url")评估?
这是info.plist中的URLTypes/LSApplicationQueriesSchemes.
上面的代码有什么问题吗?如何在模拟器上正确测试Yelp的开放,我可以在各种iOS版本(从8.1开始)进行QA测试?谢谢朋友.
我有一个子类图像视图,我想淡入、放大和旋转,然后继续旋转,同时缩小和淡出。
我正在使用带有完成处理程序的 UIView 动画块来处理收缩。
问题是它不是流畅的动画。在完成处理程序运行之前,动画会在再次运行之前停止。我需要它成为一部漂亮的“猛扑”动画。
代码如下:
let duration: TimeInterval = 3.0
let rotate = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
UIView.animate(withDuration: duration * 3, delay: 0, options: [.curveLinear], animations: {
// initial transform
self.alpha = 0
self.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
// initial spin for duration of animaton
UIView.animate(withDuration: duration * 3, delay: 0.0, options: [.curveLinear], animations: {
self.transform = rotate
}, completion: nil)
// scaling and fading
UIView.animate(withDuration: duration, delay: 0, options: [.curveLinear], animations: {
UIView.setAnimationRepeatCount(3)
self.transform = self.transform.scaledBy(x: 0.8, y: 0.8) …Run Code Online (Sandbox Code Playgroud) 我有一个带有选项卡栏的项目,并且每个选项卡都有一个自定义导航栏。每个导航栏UIView在情节提要中都设置了一个高度限制常数。
我想将此NSLayoutConstraint子类化(用于Nav高度),以便它更改iPhone X的高度。导航栏在iPhone X上需要更高,并且因为我没有使用“开箱即用”的功能对象,我的约束需要手动设置。
本质上,我想在子类中执行以下操作,因此无需重复执行一堆代码并避免不必要的出口:
override func viewWillLayoutSubviews() {
navBarHeightConstraint.constant = navBarHeightConstraintConstant()
}
func navBarHeightConstraintConstant() -> CGFloat {
switch(UIScreen.main.bounds.height) {
case 812: // iPhone X
return 90
default: // all others
return 64
}
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了子类,但是不知道使用什么方法来执行上述代码。
class NavHeightFixiPhoneXConstraint: NSLayoutConstraint {
// Nothing... yet!
}
Run Code Online (Sandbox Code Playgroud)
我如何子类化NSLayoutConstraint以便它仅显示iPhone X的特定值?
我正在努力将我的 Kotlin 应用程序转换为 Admob 20.1.0。集成激励广告时遇到问题。
问题是onUserEarnedReward永远不会被调用。我目前无法用用户解锁的内容来奖励他们。我下面的代码放置在一个onClickListener内AppCompatActivity()
if (mRewardedAd != null) {
mRewardedAd?.show(this, OnUserEarnedRewardListener { // Redundant SAM-constructor
fun onUserEarnedReward(rewardItem: RewardItem) { // Function "onUserEarnedReward" is never used
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
println("======================= TYPE - $rewardType /// AMOUNT - $rewardAmount")
// This never gets called.
}
})
} else {
println("=======================The rewarded ad wasn't ready yet.")
}
Run Code Online (Sandbox Code Playgroud)
我的进口:
import com.google.android.gms.ads.*
import com.google.android.gms.ads.rewarded.RewardItem
import com.google.android.gms.ads.rewarded.RewardedAd
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback
import com.google.android.gms.ads.OnUserEarnedRewardListener
Run Code Online (Sandbox Code Playgroud)
为什么我会得到冗余 SAM 构造函数 …
我有一个包含UITextView的视图控制器。此UITextView根据控制它的数据模型以编程方式更新文本(大约30种不同的文本选项)。UITextView中的内容将始终很长,每个大约450个单词。段落范围为2-5。
一切都完美。我只需要一种可视化的方式来拆分段落。现在,我正在使用\ n \ n在段落之间创建几个换行符。在此有效的同时,我最终需要标题。
在IB中,我将text属性从Plain更改为Attributed。这使我可以在Xcode中以类似于WYSIWYG的方式修改文本。效果很好,但是我没有使用IB来更改文本。
我确实尝试过使用WebView(下面的代码)。我用H1和P标签创建了一个非常基本的HTML文件。不幸的是,这将在我的项目中创建30多个HTML文件。从可管理性的角度来看,我不喜欢这样。文本也是无法选择的,与webview一样(我不想使用CSS [-webkit-user-select]来减轻此问题。)
let path: String? = Bundle.main.path(forResource: "myHTML", ofType: "html")
let file = try? String(contentsOfFile: path!, encoding: String.Encoding.utf8)
let baseURL = URL(fileURLWithPath: Bundle.main.bundlePath)
self.myWebView.loadHTMLString(file!, baseURL: baseURL)
Run Code Online (Sandbox Code Playgroud)
我理想的解决方案
我可以坚持使用当前设置吗?使用我的数据模型以编程方式更改UITextView文本,同时能够更改代码中的文本属性以创建我的段落标题?
编辑-尝试使其与MVC一起使用
allFormattedDescriptions: [
Formatted(heading: "heading 1", descriptionText: "Lorem Ipsum Paragraph 1"),
Formatted(heading: "heading 2", descriptionText: "Lorem Ipsum Paragraph 2"),
Formatted(heading: "heading 3", descriptionText: "Lorem Ipsum Paragraph 3")
]
// Ideal formatting; every paragraph will have a heading. Can handle that with one object that requires both …Run Code Online (Sandbox Code Playgroud)