我必须在Objective C类中确定星期几。 试图使用这种方法:
[assembly: ExportRenderer(typeof(Page), typeof(CustomPageRender))]
namespace FormsApp2.iOS
{
class CustomPageRender :PageRenderer
{
public override void ViewWillLayoutSubviews()
{
base.ViewWillLayoutSubviews();
if (this.NavigationController != null)
{
CGRect rect = View.Frame;
rect.Y = -44;
View.Frame = rect;
CGRect NavRect = NavigationController.NavigationBar.Frame;
NavRect.Y = UIScreen.MainScreen.Bounds.Height - 44;
NavigationController.NavigationBar.Frame = NavRect;
}
}
}
}
这是我的代码:
- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller
inUnit:(NSCalendarUnit)larger
forDate:(NSDate *)date;
无论哪一天,它总是返回-1。即使我改变日期,或循环整整一周。 但是,使用这种方法,效果很好:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
(int) [gregorian ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekday forDate:[NSDate date]];
到目前为止一切顺利。唯一的问题是:不推荐使用此方法(在iOS 8.0中首次弃用,因此很久以前)。 有点害怕使用旧的弃用方法进行生产。有没有办法使(甚至非常)新方法有效?
答案 0 :(得分:1)
来自ordinalityOfUnit:inUnit:forDate:
文档:
对于给定的绝对时间,返回指定的较大日历单位(例如一周)内较小日历单位(例如一天)的序号。
您已为前两个参数指定了相同的单位,您需要指定第一个的日期和第二个的星期:
[gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:[NSDate date]]
HTH