私は以前にそれをしたと確信していますが、方法がわかりません:ここに。を期待するバインディングがありNSArray
ます。内容はCGRect
オブジェクトです。
の配列からのを取得するNSArray
にはどうすればよいですか?CGRect
RectangleF[]
私が変換しなければならないもう1つのことはPointF[][]
、次のとおりです。CGPoint[]の`NSArray]
ここで実際にバインディングの問題に直面していることに注意してください。
/// Coordinates for highlight annotation (boxed CGRect's)
@property (nonatomic, strong) NSArray *rects;
/// Array of lines (which is a array of CGPoint's)
@property (nonatomic, copy) NSArray *lines;
これは彼らが現在何であるかです:
[Export ("rects")]
NSArray Rects { get; set; }
[Export ("lines")]
NSArray Lines { get; set; }
これは(バインディングプロジェクトで)コンパイルされないものです:
[Export ("rects")]
RectangleF[] Rects { get; set; }
[Export ("lines")]
PointF[][] Lines { get; set; }
編集/解決策:
PouPouの推奨に従って、私は次の作業コードを思いつきました。PointFの配列の配列をNSArrayに変換するために、このメソッドを実装しました。その入力は実際にはAnnotationPointですが、PointFに変換されることに注意してください。
/// <summary>
/// Extends AnnotationPoint[][] to allow conversion into an NSArray containing arrays of CGPoint.
/// </summary>
/// <returns>the NSArray</returns>
/// <param name='aStrokePath'>the path to convert</param>
public static NSArray ToPSPDFInkLines(this AnnotationPoint[][] aStrokePath)
{
List<NSArray> aLines = new List<NSArray>();
foreach ( AnnotationPoint[] aLine in aStrokePath )
{
List<NSObject> aLinePoints = new List<NSObject>();
foreach (AnnotationPoint oPoint in aLine)
{
aLinePoints.Add(NSObject.FromObject(oPoint.ToPointF()));
}
var oNSLineArray = NSArray.FromNSObjects(aLinePoints.ToArray());
aLines.Add(oNSLineArray);
}
NSArray oNSArray = NSArray.FromNSObjects(aLines.ToArray());
return oNSArray;
}
RectangleF []をNSArrayに変換するために、これが私が行った目的です。ここでは、AnnotationRegionオブジェクトを使用していますが、RectangleFに変換されることに注意してください。
NSObject[] aRects = oHighlightAnnot.Coords.Select(oRegion => NSObject.FromObject(oRegion.ToRectangleF())).ToArray();
NSArray oNSArray = NSArray.FromNSObjects(aRects);