如何在Xamarin.iOS项目中使用iCarousel

时间:2013-03-12 06:42:12

标签: c# objective-c icarousel xamarin.ios

我正在尝试在我的Xamarin for iOS项目中使用iOS库iCarousel。我在XCode中创建了静态库,并将其添加到Xamarin iOS Binding项目中。尝试从lib .a文件定义导出。但是我对Objective-C没有任何经验,所以我在iOS Binding Project中的导出声明有困难(可以在我的目标项目中用作dll)。 我尝试使用monotouch-binding-generator来生成所需的声明,但是在编译iOS绑定项目后我遇到了很多错误。这是我对C#的声明。

[BaseType (typeof (UIView))]
interface iCarousel {
    [Export ("id<iCarouselDelegate>")]
    IBOutlet Id<iCarouselDelegate> { get; set;  }

    [Export ("type")]
    iCarouselType Type { get; set;  }

    [Export ("perspective")]
    float Perspective { get; set;  }

    [Export ("decelerationRate")]
    float DecelerationRate { get; set;  }

    [Export ("scrollSpeed")]
    float ScrollSpeed { get; set;  }

    [Export ("bounceDistance")]
    float BounceDistance { get; set;  }

    [Export ("scrollEnabled")]
    bool ScrollEnabled { get; set;  }

    [Export ("bounces")]
    bool Bounces { get; set;  }

    [Export ("scrollOffset")]
    float ScrollOffset { get; set;  }

    [Export ("offsetMultiplier")]
    float OffsetMultiplier { get;  }

    [Export ("contentOffset")]
    SizeF ContentOffset { get; set;  }

    [Export ("viewpointOffset")]
    SizeF ViewpointOffset { get; set;  }

    [Export ("numberOfItems")]
    int NumberOfItems { get;  }

    [Export ("numberOfPlaceholders")]
    int NumberOfPlaceholders { get;  }

    [Export ("currentItemIndex")]
    int CurrentItemIndex { get; set;  }

    [Export ("currentItemView")]
    UIView CurrentItemView { get;  }

    [Export ("indexesForVisibleItems")]
    NSArray IndexesForVisibleItems { get;  }

    [Export ("numberOfVisibleItems")]
    int NumberOfVisibleItems { get;  }

    [Export ("visibleItemViews")]
    NSArray VisibleItemViews { get;  }

    [Export ("itemWidth")]
    float ItemWidth { get;  }

    [Export ("contentView")]
    UIView ContentView { get;  }

    [Export ("toggle")]
    float Toggle { get;  }

    [Export ("stopAtItemBoundary")]
    bool StopAtItemBoundary { get; set;  }

    [Export ("scrollToItemBoundary")]
    bool ScrollToItemBoundary { get; set;  }

    [Export ("useDisplayLink")]
    bool UseDisplayLink { get; set;  }

    [Export ("vertical")]
    bool Vertical { get; set;  }

    [Export ("ignorePerpendicularSwipes")]
    bool IgnorePerpendicularSwipes { get; set;  }

    [Export ("centerItemWhenSelected")]
    bool CenterItemWhenSelected { get; set;  }

    [Export ("IBOutletid<iCarouselDataSource>dataSource")]
    nonatomic, ah_weak IBOutletid<iCarouselDataSource>dataSource ();

    [Export ("scrollByOffset:duration:")]
    void ScrollByOffsetduration (float offset, double duration);

    [Export ("scrollToOffset:duration:")]
    void ScrollToOffsetduration (float offset, double duration);

    [Export ("scrollByNumberOfItems:duration:")]
    void ScrollByNumberOfItemsduration (int itemCount, double duration);

    [Export ("scrollToItemAtIndex:duration:")]
    void ScrollToItemAtIndexduration (int index, double duration);

    [Export ("scrollToItemAtIndex:animated:")]
    void ScrollToItemAtIndexanimated (int index, bool animated);

    [Export ("removeItemAtIndex:animated:")]
    void RemoveItemAtIndexanimated (int index, bool animated);

    [Export ("insertItemAtIndex:animated:")]
    void InsertItemAtIndexanimated (int index, bool animated);

    [Export ("reloadItemAtIndex:animated:")]
    void ReloadItemAtIndexanimated (int index, bool animated);

    [Export ("itemViewAtIndex:")]
    UIView ItemViewAtIndex (int index);

    [Export ("indexOfItemView:")]
    int IndexOfItemView (UIView view);

    [Export ("indexOfItemViewOrSubview:")]
    int IndexOfItemViewOrSubview (UIView view);

    [Export ("offsetForItemAtIndex:")]
    float OffsetForItemAtIndex (int index);

    [Export ("reloadData")]
    void ReloadData ();

}

[BaseType (typeof ())]
[Model]
interface iCarouselDataSource {
    [Abstract]
    [Export ("numberOfItemsInCarousel:")]
    uint NumberOfItemsInCarousel (iCarousel carousel);

    [Abstract]
    [Export ("carousel:viewForItemAtIndex:reusingView:")]
    UIView CarouselviewForItemAtIndexreusingView (iCarousel carousel, uint index, UIView view);

    [Abstract]
    [Export ("numberOfPlaceholdersInCarousel:")]
    uint NumberOfPlaceholdersInCarousel (iCarousel carousel);

    [Abstract]
    [Export ("carousel:placeholderViewAtIndex:reusingView:")]
    UIView CarouselplaceholderViewAtIndexreusingView (iCarousel carousel, uint index, UIView view);

    [Abstract]
    [Export ("numberOfVisibleItemsInCarousel:")]
    uint NumberOfVisibleItemsInCarousel (iCarousel carousel);

}

[BaseType (typeof ())]
[Model]
interface iCarouselDelegate {
    [Export ("carouselWillBeginScrollingAnimation:")]
    void CarouselWillBeginScrollingAnimation (iCarousel carousel);

    [Export ("carouselDidEndScrollingAnimation:")]
    void CarouselDidEndScrollingAnimation (iCarousel carousel);

    [Export ("carouselDidScroll:")]
    void CarouselDidScroll (iCarousel carousel);

    [Export ("carouselCurrentItemIndexUpdated:")]
    void CarouselCurrentItemIndexUpdated (iCarousel carousel);

    [Export ("carouselWillBeginDragging:")]
    void CarouselWillBeginDragging (iCarousel carousel);

    [Export ("carouselDidEndDragging:willDecelerate:")]
    void CarouselDidEndDraggingwillDecelerate (iCarousel carousel, bool decelerate);

    [Export ("carouselWillBeginDecelerating:")]
    void CarouselWillBeginDecelerating (iCarousel carousel);

    [Export ("carouselDidEndDecelerating:")]
    void CarouselDidEndDecelerating (iCarousel carousel);

    [Export ("carousel:itemTransformForOffset:baseTransform:")]
    CATransform3D CarouselitemTransformForOffsetbaseTransform (iCarousel carousel, float offset, CATransform3D transform);

    [Export ("carousel:valueForOption:withDefault:")]
    float CarouselvalueForOptionwithDefault (iCarousel carousel, iCarouselOption option, float value);

    [Export ("carousel:shouldSelectItemAtIndex:")]
    bool CarouselshouldSelectItemAtIndex (iCarousel carousel, int index);

    [Export ("carousel:didSelectItemAtIndex:")]
    void CarouseldidSelectItemAtIndex (iCarousel carousel, int index);

    [Export ("carouselShouldWrap:__attribute__((deprecated))")]
    bool CarouselShouldWrap__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

    [Export ("carouselItemWidth:__attribute__((deprecated))")]
    float CarouselItemWidth__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

    [Export ("carouselOffsetMultiplier:__attribute__((deprecated))")]
    float CarouselOffsetMultiplier__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

    [Export ("carousel:itemAlphaForOffset:__attribute__((deprecated))")]
    float CarouselitemAlphaForOffset__attribute__((deprecated)) (iCarousel carousel, float offset, (deprecated ));

    [Export ("carousel:valueForTransformOption:withDefault:__attribute__((deprecated))")]
    float CarouselvalueForTransformOptionwithDefault__attribute__((deprecated)) (iCarousel carousel, iCarouselOption option, float value, (deprecated ));

}  

如何在我的Xamarin.iOS项目中修复错误并使用iCarousel?这是我与Xamarin的第一个项目,对不起,如果问题很愚蠢。

感谢。

1 个答案:

答案 0 :(得分:2)

那些看起来不对:

[Export ("id<iCarouselDelegate>")]
IBOutlet Id<iCarouselDelegate> { get; set;  }

[...]

[Export ("IBOutletid<iCarouselDataSource>dataSource")]
nonatomic, ah_weak IBOutletid<iCarouselDataSource>dataSource ();

[...]


[Export ("carouselShouldWrap:__attribute__((deprecated))")]
bool CarouselShouldWrap__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

[Export ("carouselItemWidth:__attribute__((deprecated))")]
float CarouselItemWidth__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

[Export ("carouselOffsetMultiplier:__attribute__((deprecated))")]
float CarouselOffsetMultiplier__attribute__((deprecated)) (iCarousel carousel, (deprecated ));

[Export ("carousel:itemAlphaForOffset:__attribute__((deprecated))")]
float CarouselitemAlphaForOffset__attribute__((deprecated)) (iCarousel carousel, float offset, (deprecated ));

[Export ("carousel:valueForTransformOption:withDefault:__attribute__((deprecated))")]
float CarouselvalueForTransformOptionwithDefault__attribute__((deprecated)) (iCarousel carousel, iCarouselOption option, float value, (deprecated ));

对于已弃用的,删除它们,您将不需要它们。对于其他2个,首先将它们注释掉,然后修复它们。

也有:

[BaseType (typeof ())]
[Model]
interface iCarouselDelegate {
代表通常是[BaseType (typeof (NSObject)]

无论如何,拥有一台发电机可以帮助您入门,但绝不会期望它为您完成所有工作。不要经济不读this并了解Obj-C