我正在使用Xcode 8,iOS 10.我从Storyboard创建了ScrollView。我的流程是
[self.scrollView addSubview:parentView]; self.scrollView.frame = CGRectMake(0, 0, 320, parentView.frame.size.height); [self.scrollView setContentSize:CGSizeMake(320, parentView.frame.size.height)];
当我在此代码后打印Scrollview高度时,它显示的“680”超过了我的视图高度。我尝试过使用“viewDidLayoutSubviews”方法但仍然无法使用ScrollView。 有没有人知道为什么它不滚动?
答案 0 :(得分:3)
您的代码中的问题是您要从父视图设置 scrollview 高度和 contentSize 高度。
您应该执行以下操作: -
[self.scrollView addSubview:parentView];
self.scrollView.frame = CGRectMake(0, 0, 320, [UIScreen mainScreen].bounds.size.height);
[self.scrollView setContentSize:CGSizeMake(320, parentView.frame.size.height)];
希望这会有所帮助
答案 1 :(得分:3)
您正在设置function my_custom_price_format( $formatted_price, $price, $decimals, $decimal_separator, $thousand_separator ) {
$decimal_part = substr(strrchr($price, $decimal_separator), 1);
return '<span class="int-part">' . floor( $price ) . '</span>' . '<sup class="decimal-part">' . $decimal_part . '</sup>';
}
add_filter( 'formatted_woocommerce_price', 'my_custom_price_format', 20, 5 );
的错误帧。这就是为什么你的内容不起作用的原因。
试试这个,
UIScrollView
答案 2 :(得分:1)
尝试在&#34; Interface Builder Document&#34;下禁用自动布局。禁用:&#34;使用Autolayout&#34;
这是我的工作。
答案 3 :(得分:1)
动态计算UIScrollview contentSize(取决于子视图框架)并在viewDidLayoutSubviews
异步在主线程中进行设置
迅速:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
DispatchQueue.main.async {
var contentRect = CGRect.zero
for view in self.scrollView.subviews {
contentRect = contentRect.union(view.frame)
}
self.scrollView.contentSize = contentRect.size
}
}
目标C:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
dispatch_async(dispatch_get_main_queue(), ^ {
CGRect contentRect = CGRectZero;
for(UIView *view in scrollView.subviews)
contentRect = CGRectUnion(contentRect,view.frame);
scrollView.contentSize = contentRect.size;
});
}
答案 4 :(得分:0)
尝试在设置scrollView框架之前设置layoutIfNeeded
。
我和你一样有类似情况。
-(void)viewDidLoad{
[self.view layoutIfNeeded];
self.myCustomScrollView.frame = self.contentView.bounds;
}
AutoLayout似乎与Xcode8中的帧位置不同。
只是不知道为什么,但它对我有用。