我想在我的iOS应用程序中使用自定义字体(Bebas Neue).我采取的步骤是:
我用过的代码:
for name in UIFont.familyNames() {
println(name)
if let nameString = name as? String
{
println(UIFont.fontNamesForFamilyName(nameString))
}
}
Run Code Online (Sandbox Code Playgroud)
我用过的代码:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
Run Code Online (Sandbox Code Playgroud)
截图:
Apple宣布NSAllowArbitraryLoads不会很快工作.因此,在iOS 10中,我在info.plist中有这个:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>myAPIdomain</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
这适用于我在UIWebView中的API请求和内容.但是,在iOS9中,NSAllowsArbitraryLoadsInWebContent不受支持,建议包括NSAllowsArbitraryLoadsiOS 9支持.但我认为这会覆盖我的NSExceptionDomains设置?如何在iOS 9和iOS 10上为我的API和UIWebView提供HTTP请求仍然可以遵循Apple的规则?
编辑
支持iOS 9和iOS 10:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>myAPIdomain</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud) 在我的 Android 应用程序中,我正在创建用户并发送验证电子邮件。当用户通过单击收到的电子邮件中的链接进行验证后,我想进入下一页。但是,验证状态没有更新,所以我无法继续。我试过注销并再次登录,这有效,但我不想以这种方式刷新状态。有任何想法吗?
这是我的代码:
public void onClickContinueBtn() {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.reload().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
if(!user.isEmailVerified()){
// not verified block
// get into here even if verified
} else {
// email verified, go to next page
}
} else {
// do nothing, or show error
}
}
});
}
Run Code Online (Sandbox Code Playgroud) 我正在使用这个库来录制来自 USB 摄像头的视频。我使用的代码如下:
try {
private MediaMuxerWrapper mMuxer;
mMuxer = new MediaMuxerWrapper("FolderName", ".mp4");
new MediaVideoEncoder(mMuxer, mMediaEncoderListener);
mMuxer.prepare();
mMuxer.startRecording();
} catch (final IOException e) {
}
private final MediaEncoder.MediaEncoderListener mMediaEncoderListener = new MediaEncoder.MediaEncoderListener() {
@Override
public void onPrepared(final MediaEncoder encoder) {
if (encoder instanceof MediaVideoEncoder)
try {
mWeakCameraView.get().setVideoEncoder(encoder);
} catch (final Exception e) {
Log.e(TAG, "onPrepared:", e);
}
if (encoder instanceof MediaSurfaceEncoder)
try {
mWeakCameraView.get().setVideoEncoder(encoder);
mUVCCamera.startCapture(((MediaSurfaceEncoder)encoder).getInputSurface());
} catch (final Exception e) {
Log.e(TAG, "onPrepared:", e);
}
}
@Override
public …Run Code Online (Sandbox Code Playgroud)