我viewDidLoad
在UIViewController
子类中有以下方法实现:
var scrollView = UIScrollView.newAutoLayoutView()
var contentView = UIView.newAutoLayoutView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
scrollView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
scrollView.addSubview(contentView)
contentView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
contentView.autoMatchDimension(.Height, toDimension: .Height, ofView: view)
contentView.autoMatchDimension(.Width, toDimension: .Width, ofView: view)
contentView.addSubview(customView)
customView.autoPinEdgeToSuperviewEdge(.Top, withInset:0)
customView.autoPinEdgeToSuperviewEdge(.Left, withInset:15)
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,内容不会滚动.我发现很少有PureLayout文档和示例,并且没有关于滚动视图的清楚.有人可以帮我这个吗?
我在iOS中使用uiscrollview时遇到内存问题.
我有一个带有巨大子视图的滚动视图(4000x600).在这个子视图中,我有其他UIImageViews作为子视图.
情况就是这样:
当我打开scrollview时,我可以看到内存和进程都在急剧增加.
我想知道解决问题的方法是:将所有视图直接添加到scrollview,而不是传递到"中间"巨大视图是否更好?
提前致谢.
下面的Swift代码管理放大和缩小UIImage
内部a UIScrollView
.
双击时,图像放大到中心并缩小到中心.
题:
需要进行哪些代码更改才能将放大点设置为用户在屏幕上触摸的图像区域的中心?
(例如,如果用户双击图像的左上角,图像将相应地放大图像的左上角.)
class ScrollViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: UIImage(named: "image.png"))
scrollView = UIScrollView(frame: view.bounds)
scrollView.backgroundColor = UIColor.blackColor()
scrollView.contentSize = imageView.bounds.size
scrollView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
scrollView.contentOffset = CGPoint(x: 1000, y: 450)
scrollView.addSubview(imageView)
view.addSubview(scrollView)
scrollView.delegate = self
setZoomScale()
setupGestureRecognizer()
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
override func viewWillLayoutSubviews() {
setZoomScale()
}
func setZoomScale() {
let imageViewSize = imageView.bounds.size …
Run Code Online (Sandbox Code Playgroud) 当用户滚动到顶部时,我设法禁用弹跳效果.我想以某种方式反转它,以便在底部禁用弹跳效果.你可以帮我修改我的代码吗?
var lastY: CGFloat = 0.0
func scrollViewDidScroll(scrollView: UIScrollView) {
let currentY = scrollView.contentOffset.y
let currentBottomY = scrollView.frame.size.height + currentY
if currentY > lastY {
//"scrolling down"
tableView.bounces = true
} else {
//"scrolling up"
// Check that we are not in bottom bounce
if currentBottomY < scrollView.contentSize.height + scrollView.contentInset.bottom {
tableView.bounces = false
}
}
lastY = scrollView.contentOffset.y
}
Run Code Online (Sandbox Code Playgroud) 在ViewA之上有一个子视图.请在下面找到屏幕布局.当选择UITextField时显示键盘,即使它与UITextField不重叠,视图也会向上滚动.
ViewA
-> UIButton
subView
-> UIScrollView
-> UITextField
-> UITextField
ViewA
-----------
| |
| |
| Button |
| |
| |
-----------
subView
--------------
| |
| |
| UITextField |
| UITextField |
| |
--------------
Run Code Online (Sandbox Code Playgroud)
我已经注册了键盘通知
- (void) viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void) keyboardDidShow:(NSNotification *)notification {
NSDictionary* info = [notification userInfo];
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbRect.size.height, …
Run Code Online (Sandbox Code Playgroud) 在我的视图控制器中,我有1个具有不同数据的表视图。
顶部蓝色是“视图”,底部蓝色是TabBar。
在主屏幕中,顶部是“视图”,在“趋势”屏幕中,我通过将其约束更改为0来隐藏它。
当我滚动tableview以查看新帖子时以及单击趋势视图时,我会在TableView中加载新数据并在tableview顶部滚动代码。
dispatch_async(dispatch_get_main_queue(), ^{
[self.tblVW setContentOffset:CGPointZero animated:NO];
[self.tblVW reloadData];
});
Run Code Online (Sandbox Code Playgroud)
但它不会移到表格视图的顶部。
顶部有一个空格,当我触摸tableview时,它将滚动到顶部。
我有一种情况,我正在使用UIScrollView来帮助使用较小手机的用户查看窗口内的全文.我想要显示一个图像图标,如果他们需要滚动(只是为了让他们知道窗口内有更多)但我在使用Swift找到滚动视图的高度时遇到了问题.
这是我的对象的层次结构
基本上,这4个标签适合4.7"iPhone而不是4"iPhone.我尝试设置一些逻辑来检查UIScrollView内容是否大于窗口,但它似乎没有工作.我一直认为高度为零.
我使用scrollHeight = scrollView.contentSize.height
,并试图把那里面viewDidLoad()
,viewWillAppear()
和viewDidLayoutSubviews()
但每次它最终被0.
contentSize
我应该用它来检查高度是正确的吗?
我需要水平滚动屏幕底部的缩略图列表,其中显示了所有用户最近拍摄的照片/视频.
我在其中创建了一个带有UITableview的UIScrollView.
这是正确的方法,因为我似乎无法在其超类中找到滚动方向的覆盖方法吗?我在网上找到的大多数主题都涉及将UIscrollview放在TableCell中,这对我的特定应用程序不起作用?
层次结构是:
查看> 滚动视图 >表视图> 表格Cel >内容> PhotoThumbnail
我正在制作一个图像滑块,该滑块每2秒自动滑动一次。我编写的代码可立即移动到下一张没有幻灯片动画的图像,我想通过显示scrollview滚动以某种方式修复它,这是我的代码:
var imagesArray = [UIImage]()
static var i = 0
override func viewDidLoad() {
super.viewDidLoad()
imagesArray = [image1, image2, image3, image4]
for i in 0..<imagesArray.count{
let imageview = UIImageView()
imageview.image = imagesArray[i]
imageview.contentMode = .scaleAspectFit
let xPosition = self.view.frame.width * CGFloat(i)
imageview.frame = CGRect(x: xPosition, y: 0, width: self.imagesScrollView.frame.width, height: self.imagesScrollView.frame.height)
imagesScrollView.contentSize.width = imagesScrollView.frame.width * CGFloat(i+1)
imagesScrollView.addSubview(imageview)
}
}
override func viewDidAppear(_ animated: Bool) {
let scrollingTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(MenuViewController.newStartScrolling), userInfo: nil, repeats: true)
scrollingTimer.fire()
func …
Run Code Online (Sandbox Code Playgroud) 我做了30个文本框,并var scrollview: UIScrollView
在viewDidLoad()
和我试图拉升整体向上滚动视图时,键盘盖文本框。Delegate
的文本字段和scrollview已经设置。此代码(下面向下)有效,并且第一次出现键盘时scrollview会向上移动,但是问题是,当第二次或更多次打开键盘时,scrollview不会向上移动,我一直无法解决问题几个小时。谁能在我的代码中检测到一些错误并给出正确答案?我期待任何帮助!
我写的代码是这样的:
var activeField: UITextField?
func registerForKeyboardNotifications(){
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notificaiton:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
func deregisterForKeyboardNotifications(){
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.removeObserver(self, name:NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc func keyboardWasShown(notificaiton: NSNotification){
var info = notificaiton.userInfo!
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
var aRect: CGRect = view.frame
aRect.size.height -= keyboardSize!.height
if let activeField = activeField{
if !aRect.contains(activeField.frame.origin) == …
Run Code Online (Sandbox Code Playgroud) uiscrollview ×10
ios ×8
swift ×5
uitableview ×3
autolayout ×2
iphone ×2
swift3 ×2
objective-c ×1
optimization ×1
pure-layout ×1
swift4 ×1
uiimage ×1
uikit ×1
xcode ×1
xcode8 ×1