如何更改UIActivityViewController模态共享操作中使用的邮件撰写对象的导航栏的外观?

UIActivityViewController符合UIAppearance,所以我认为以下工作确实有效,但事实并非如此.导航栏保持默认蓝色.
activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor];
Run Code Online (Sandbox Code Playgroud)
语境:
- (IBAction)share {
NSString *textToShare = ...;
NSURL *url = ...;
NSArray *activityItems = [[NSArray alloc] initWithObjects:textToShare,url,nil];
UIActivity *activity = [[UIActivity alloc] init];
NSArray *applicationActivities = [[NSArray alloc] initWithObjects:activity, nil];
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
[activityVC setExcludedActivityTypes:[NSArray arrayWithObjects: UIActivityTypeMessage,UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,UIActivityTypePostToWeibo, UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,
nil]];
activityVC.navigationController.navigationBar.tintColor = [UIColor greyColor];
[self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
如何将UINavigationBar蓝色的色调更改为灰色.
objective-c modalviewcontroller ios uiappearance uiactivityviewcontroller
我用a UIPresentationController来显示自定义模态.演示控制器在显示时具有UIView动画显示的调光视图.模态本身是UIViewController添加到表示控制器的容器中的.
我只能[self dismissViewControllerAnimated:NO completion:nil]从嵌入式UIViewController 调用.但我不能这样做UIPresentationController.但这就是调光视图的地方.
我想避免为模态添加额外的不可见视图或NSNotificationCenter尽可能使用.
如何UIPresentationController通过点击其调光视图来解雇?是否有意义?可能吗?
objective-c uiviewcontroller uikit ios uipresentationcontroller
我想根据测量打印一个字符串,但将其限制为 2 位数字。我为此使用了MeasurementFormatter。
var beans:Measurement = Measurement(value: 20.22321, unit: UnitMass.milligrams) // "20.22321 mg"
let formatter = MeasurementFormatter()
formatter.numberFormatter.maximumFractionDigits = 2
let label = formatter.string(from: beans) // 0 lb
Run Code Online (Sandbox Code Playgroud)
我期望20.22 mg的结果,而不是0 lb。我的错在哪里?
我写了一个简单的 Alexa 技能。它使用“alexa-app”作为依赖。
var alexa = require('alexa-app');
当我保存并测试我的技能时,我得到以下响应
{
"errorMessage": "Cannot find module 'alexa-app'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:276:25)",
"Module.require (module.js:353:17)",
"require (internal/module.js:12:17)",
"Object.<anonymous> (/var/task/index.js:4:13)",
"Module._compile (module.js:409:26)",
"Object.Module._extensions..js (module.js:416:10)",
"Module.load (module.js:343:32)",
"Function.Module._load (module.js:300:12)",
"Module.require (module.js:353:17)"
]
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用此“alexa-app”依赖项而不将其烘焙到 zip 文件中。为了加快开发速度,我更喜欢在在线 Lambda 代码编辑器中只使用一个文件。这可能吗?
我有很多基于按钮的字符串值的切换语句(例如,将箭头图像移动到UIButton的坐标).我意识到我的代码中有很多重复.我想到的一件事是例如使用实际的"切换"功能但不幸的是它只使用int作为切换变量类型而不是字符串.
这是我正在寻求改进的代码示例:
-(void)initAperture{
//Set
if ([[[self dataObject] logAperture] isEqualToString:@"dark"]) {
[self moveImageView:selectorAperture
toUIButton:buttonApertureDark
animated:NO];
}
if ([[[self dataObject] logAperture] isEqualToString:@"cloudy"]) {
[self moveImageView:selectorAperture
toUIButton:buttonApertureCloudy
animated:NO];
}
if ([[[self dataObject] logAperture] isEqualToString:@"sunny"]) {
[self moveImageView:selectorAperture
toUIButton:buttonApertureSunny
animated:NO];
}
if ([[[self dataObject] logAperture] isEqualToString:@"pinhole"]) {
[self moveImageView:selectorAperture
toUIButton:buttonAperturePinhole
animated:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
任何改进建议或最佳实践表示赞赏.
我即将实现一个调用默认模态共享活动视图的共享按钮.
这是我到目前为止所得到的.
NSString *textToShare = [NSString stringWithFormat:@"Looking forward to meet you at %@",[eventItemObject eventName]];;
NSURL *url = [eventItemObject eventWebsiteURL];
NSArray *activityItems = [[NSArray alloc] initWithObjects:textToShare,url,nil];
UIActivity *activity = [[UIActivity alloc] init];
NSArray *applicationActivities = [[NSArray alloc] initWithObjects:activity, nil];
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
[self presentViewController:activityVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
按下共享按钮时会调用此方法.
挑战:
经过一些研究后,我认为这可以用新的SLComposeViewController(在iOS6中)完成,但我不知道在哪里/如何正确调用它.任何实用的建议或例子表示赞赏!
我无法使用Eventkit访问设备的日历.我正在使用EKEventEditViewController来呈现用于添加日历条目的视图.
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEventEditViewController *eventController = [[EKEventEditViewController alloc]init];
eventController.eventStore = eventStore;
eventController.editViewDelegate = self;
...
[self presentViewController:eventController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
这在模拟器上工作正常,但在手机上运行它时会收到以下错误消息(iOS6):"此应用程序无法访问您的日历"

按照建议检查隐私设置不会显示我的应用程序的任何条目.
如何解决这个问题并授予访问权限?
可能重复:
在iOS应用程序中存储全局常量的位置?
我想将配置变量存储在一个中心位置.变量在运行时不会更改.它们应该可以从项目中的任何类访问.
我目前的方法是使用一个GlobalSettings.h文件,其配置变量定义如下
#define kCacheAge 10.0 //Max. Cache Age in Seconds
#define kNavigationTitleTint colorWithRed:0.443 green:0.471 blue:0.502 alpha:1.0
#define kNavigationTitleFont boldSystemFontOfSize:20.0
Run Code Online (Sandbox Code Playgroud)
......并在我需要的地方加入他们的名字.
缺点:
有没有更好的方法来做到这一点,也许避免上述缺点?存储配置变量的最佳实践?
我试图从EventKit异步获取提醒(EKEntityTypeReminder).我如何在Swift中写这个?
[_store fetchRemindersMatchingPredicate:predicate completion:^(NSArray *reminders) {
for (EKReminder *reminder in reminders) {
NSLog(@"Reminder %@",reminder);
}
}];
Run Code Online (Sandbox Code Playgroud)
...仍在努力适应新的Blocks/Closures语法
如何从按钮背景中减去标题文本的形状?

我创建了一个自定义UIButton类.目前添加边框和文本颜色的代码看起来就像这样
layer.borderWidth = 2.0
layer.borderColor = buttonColor.CGColor
layer.cornerRadius = (CGFloat(bounds.height) + paddingVertical * 2.0) / 2.0
setTitleColor(buttonColor, forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)
关于如何从背景中减去按钮标题形状的任何建议.我是否需要将所有这些渲染为图像或是否有更好的替代方案?
ios ×9
objective-c ×6
swift ×3
alexa ×1
aws-lambda ×1
calayer ×1
calendar ×1
ekeventstore ×1
eventkit ×1
measurement ×1
permissions ×1
reminders ×1
share ×1
uiappearance ×1
uibutton ×1
uikit ×1