저는 ScrollView가있는 iPad보기가 있으며 그 아래에 페이지 컨트롤 개체를 사용하여 페이지가 어떤 페이지에 있는지 보여줍니다. 화면의 다른 곳에서 나는 12:00 AM과 5:00 AM 사이의 타임 라인을 가지고 있습니다. 시간이 진행됨에 따라 시간을 표시하기 위해 타임 라인 상단에 UIImage가 더 넓어졌습니다. UIImage는 매분마다 시작되는 NSTimer의 사용을 통해 하루가 진행됨에 따라 더 넓어집니다.UIPageControl 재설정 원래 상태로보기
또한 Scrollview 내부에 새로운 이미지 세트가있는 Scrollview를 새로 고치는 3 개의 버튼이 페이지에 있습니다. 이미지 수는 3에서 7 사이에서 변경할 수 있습니다. 따라서 버튼을 누르면 스크롤 뷰를 업데이트하고 페이지 컨트롤 객체를 업데이트하여 "numberOfPages"속성을 적절한 숫자로 설정합니다.
OK, 버튼을 클릭하고 pageControl numberOfPages가 변경 될 때마다 UIImage는 인터페이스 작성기 (스토리 보드)에서 원래 디자인했을 때의 크기로 되돌아갑니다.
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *btnTest;
@property (weak, nonatomic) IBOutlet UIImageView *imgTest;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
- (IBAction)buttonPress:(id)sender;
@end
ViewController.m : # import를 "ViewController.h"
나는 희망 동작을 재현하기에 충분있는 간단한 예제 프로젝트 ...ViewController.h을 생성
@interface ViewController()
@end
@implementation ViewController
@synthesize imgTest,btnTest,pageControl;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Set up an observer to handle updating the timeline
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UpdateWidth:)
name:@"UpdateWidth" object:nil];
}
-(void)viewDidAppear:(BOOL)animated {
// Send an updateTimeIndicator notification when screen loads.
[[NSNotificationCenter defaultCenter] postNotificationName:@"UpdateWidth" object:@"sent"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)buttonPress:(id)sender {
pageControl.numberOfPages = 7;
pageControl.currentPage = 0;
}
-(void)UpdateWidth:(NSNotification *)notification{
[imgTest setFrame:CGRectMake([imgTest frame].origin.x, [imgTest frame].origin.y,
450, [imgTest bounds].size.height)];
imgTest.contentMode = UIViewContentModeScaleAspectFit; // This determines position of image
imgTest.clipsToBounds = YES;
[imgTest setNeedsDisplay];
NSLog(@"Width Updated");
}
@end
그래서이 예제에서는 PageControl, Button 및 배경이 파란색으로 설정된 UIImage라는 3 개의 개체가 Window에 있습니다. UIImage의 크기를 조정할 때 알림 센터를 사용하여 메시지를 보내고 있습니다 (이 경우 한 번만,보기가 나타날 때). updateWidth 루틴은 UIImage의 너비를 450 픽셀로 지정하고보기가 올바르게 표시됩니다.
그러나 단추를 누르면 numberOfPages 값이 변경되고 UIImageView는 Interface Builder에서 원래 레이아웃되었을 때의 크기로 다시 설정됩니다.
누구나보고 싶으면 압축 된 프로젝트 파일이 있습니다. 또한 알림 센터를 사용하지 않고이 작업을 시도했지만 그 결과는 동일했습니다 (원래 알림 센터를 사용하지 않고 다른 결과를 줄 수 있다고 생각했습니다).
아마도 PageControl 개체를 사용하지 않아도 얻을 수 있지만 지금은 왜 그런지 궁금합니다. 감사!
나는 zip 프로젝트를 [email protected]에 보내겠습니까? –
이메일을 보냈습니다 - 감사합니다! 실제로 이것을 보지 않고 설명하기는 다소 어려움이 있습니다. StackOverflow 내에서 여기에 프로젝트 파일을 첨부 할 수 있습니다. – user1720817