gab*_*ish 5 objective-c uiscrollview ios
我有一个UIScrollView动态添加到主视图中,我用小UIView对象填充它.我将它的contentSize设置为大于设备分辨率的东西,但在我改变设备的方向之前我无法滚动它.
如何在方向改变之前滚动?
后期编辑:
我意识到问题来自我正在添加的某些子视图,更具体地说是为这些子视图添加一些约束:
这是我添加子视图的代码(该方法被调用大约10-20次):
-(void) addShelve:(NSInteger) index
{
FSShelf *shelf = [[FSShelf alloc] initWithFrame:CGRectMake(0, index * [FSConstants getShelfVerticalDistance], 0, 0)];
[shelves addObject:shelf];
[shelfView addSubview:shelf];
[shelf addShelfConstraints];
}
Run Code Online (Sandbox Code Playgroud)
FSShelf是UIView的子类,shelfView是我的UIScrollView的子类.
以下是在以下位置添加的约束addShelfContraints
:
[self.superview addConstraint:[FSUtils getWidthConstraintFor:self.superview with:self constant: -2 * ([FSConstants getShelveMargin])]];
[self addConstraint:[FSUtils getSelfHeightConstraintFor:self constant:30]];
[self.superview addConstraint:[FSUtils getCenterXConstraintFor:self.superview with:self constant:0]];
Run Code Online (Sandbox Code Playgroud)
FSUtils类中用于添加约束的方法:
+ (NSLayoutConstraint *)getSelfHeightConstraintFor:(UIView *)view constant:(CGFloat)constant
{
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:constant];
return constraint;
}
+ (NSLayoutConstraint *)getCenterXConstraintFor:(UIView *)superView with:(UIView *)subView constant:(CGFloat)constant
{
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:superView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:constant];
return constraint;
}
+ (NSLayoutConstraint *)getWidthConstraintFor:(UIView *)superView with:(UIView *)subView constant:(CGFloat)constant
{
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:subView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:superView
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:constant];
return constraint;
}
Run Code Online (Sandbox Code Playgroud)
你注意到那些约束有什么问题吗?
在您的单击上,尝试像这样创建
UIScrollView * scrollview = [[UIScrollView alloc]init];
CGRect viewFrame = self.view.frame;
[scrollview setFrame:viewFrame];
[scrollview setShowsHorizontalScrollIndicator:YES];
[scrollview setShowsVerticalScrollIndicator:YES];
UIView * view = [[UIView alloc]init];
CGRect viewDoubleFrame = CGRectMake(viewFrame.origin.x,viewFrame.origin.y,viewFrame.size.width * 2,viewFrame.size.height *2);
[view setFrame:viewDoubleFrame];
[view setBackgroundColor:[UIColor darkGrayColor]];
// add your additional components here
[scrollview setContentSize:CGSizeMake(view.frame.size.width,view.frame.size.height)];
[scrollview addSubview:view];
[self.view addSubview:scrollview];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1549 次 |
最近记录: |