iOS: implement NestedSlider slidePosition
This commit is contained in:
@@ -61,6 +61,15 @@ - (void)blendView:(UIScrollView *)view forPropName:(NSString *)name propValue:(i
|
||||
self.view.scrollsToTop = [prop boolValue];
|
||||
} else if ([@"onPageSlided" isEqualToString:name]) {
|
||||
self.onPageSelectedFuncId = prop;
|
||||
} else if ([@"slidePosition" isEqualToString:name]) {
|
||||
NSUInteger slidePosition = [prop unsignedIntegerValue];
|
||||
if (self.view.width > 0 && ((NSUInteger) self.view.contentOffset.x / self.view.width) == slidePosition) {
|
||||
} else {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.view setContentOffset:CGPointMake(slidePosition * self.view.width, self.view.contentOffset.y)
|
||||
animated:NO];
|
||||
});
|
||||
}
|
||||
} else {
|
||||
[super blendView:view forPropName:name propValue:prop];
|
||||
}
|
||||
|
@@ -208,15 +208,23 @@ - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collection
|
||||
DoricSlideItemNode *node = cell.doricSlideItemNode;
|
||||
node.viewId = model[@"id"];
|
||||
[node blend:props];
|
||||
[node.view.doricLayout apply:CGSizeMake(collectionView.width, collectionView.height)];
|
||||
CGFloat maxWidth = collectionView.width;
|
||||
if (collectionView.doricLayout.widthSpec == DoricLayoutFit) {
|
||||
maxWidth = [[UIScreen mainScreen] bounds].size.width;
|
||||
}
|
||||
CGFloat maxHeight = collectionView.height;
|
||||
if (collectionView.doricLayout.heightSpec == DoricLayoutFit) {
|
||||
maxHeight = [[UIScreen mainScreen] bounds].size.height;
|
||||
}
|
||||
[node.view.doricLayout apply:CGSizeMake(maxWidth, maxHeight)];
|
||||
[node requestLayout];
|
||||
BOOL needLayout = NO;
|
||||
if (self.view.doricLayout.widthSpec == DoricLayoutFit && self.view.width < node.view.width) {
|
||||
if (collectionView.doricLayout.widthSpec == DoricLayoutFit && collectionView.width < node.view.width) {
|
||||
self.view.width = node.view.width;
|
||||
needLayout = YES;
|
||||
}
|
||||
if (self.view.doricLayout.heightSpec == DoricLayoutFit && self.view.height < node.view.height) {
|
||||
self.view.height = node.view.height;
|
||||
if (collectionView.doricLayout.heightSpec == DoricLayoutFit && collectionView.height < node.view.height) {
|
||||
collectionView.height = node.view.height;
|
||||
needLayout = YES;
|
||||
}
|
||||
if (needLayout) {
|
||||
@@ -238,6 +246,11 @@ - (void)scheduleLayout {
|
||||
self.scheduledLayout = NO;
|
||||
DoricSuperNode *node = self.superNode;
|
||||
while (node.superNode != nil) {
|
||||
if ([node.view isKindOfClass:UITableView.class]) {
|
||||
UITableView *tableView = (UITableView *) node.view;
|
||||
[tableView reloadData];
|
||||
return;
|
||||
}
|
||||
node = node.superNode;
|
||||
}
|
||||
[node requestLayout];
|
||||
|
Reference in New Issue
Block a user