我在我的iOS应用程序中添加了“今天”扩展小部件,这是我用Xamarin制作的。我正在讲述这个演练:
https://developer.xamarin.com/guides/ios/platform_features/introduction_to_extensions/
小部件出现在模拟器的“通知”部分中,但我无法在其中显示任何内容。它甚至不会创建我创建的UIViewController类并将其设置为初始控制器(我知道因为它永远不会在构造函数中遇到我的断点)。我将其设置为具有此密钥的主要类,如演练中所述:
知道为什么吗?我在添加扩展程序后首次启动应用程序时也收到此消息:
appname may slow down your phone the developer of this app needs to update it to improve its compatibility
我使用Xamarin制作了一个示例项目,当部署在模拟器上时,小部件确实出现在这个项目中,而不是我想要在CodeViewController类中添加的内容:
https://drive.google.com/file/d/0B8xKHTqtwfKtY0xZN0xaejhlZmM/view?usp=sharing
答案 0 :(得分:1)
为了节省你2天我花在这上面就是解决方案。
不要在DidLoad中使用View.Frame。框架的大小是整个屏幕尺寸,因此当您将标签置于中心时,您将看不到它。像这样使用WillAppear
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
if (TodayMessage == null)
{
// Add label to view
TodayMessage = new UILabel(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
{
TextAlignment = UITextAlignment.Center,
BackgroundColor = UIColor.LightGray,
TextColor = UIColor.Black
};
// Calculate the values
var dayOfYear = DateTime.Now.DayOfYear;
var leapYearExtra = DateTime.IsLeapYear(DateTime.Now.Year) ? 1 : 0;
var daysRemaining = 365 + leapYearExtra - dayOfYear;
// Display the message
if (daysRemaining == 1)
{
TodayMessage.Text = String.Format("Today is day {0}. There is one day remaining in the year.", dayOfYear);
}
else
{
TodayMessage.Text = String.Format("Today is day {0}. There are {1} days remaining in the year.", dayOfYear, daysRemaining);
}
View.AddSubview(TodayMessage);
}
}