[ios] UIActivityIndicator의 크기를 변경할 수 있습니까?

할당하는 동안 크기에 관계없이 고정 크기 만 표시합니다. 그것을 늘릴 수 있습니까?

암호:

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:
                     CGRectMake(142.00, 212.00, 80.0, 80.0)];
[[self view] addSubview:activityIndicator];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
                                      UIViewAutoresizingFlexibleRightMargin |
                                      UIViewAutoresizingFlexibleTopMargin |
                                      UIViewAutoresizingFlexibleBottomMargin);
activityIndicator.hidesWhenStopped = YES;
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;



답변

크기는 스타일에 따라 고정됩니다. 표준화 된 인터페이스 요소이므로 API가 조작하는 것을 좋아하지 않습니다.

그러나 아마도 스케일링 변환을 수행 할 수 있습니다. 그러나 그것이 시각적으로 어떻게 영향을 미칠지 확실하지 않습니다.

UI 디자인 관점에서 보면 일반적으로 이러한 공통적 인 표준화 된 요소는 그대로 두는 것이 좋습니다. 사용자는 특정 요소가 특정 크기로 나타나고 특정 사물을 의미한다고 배웠습니다. 표준 모양을 변경하면 인터페이스 문법이 변경되고 사용자가 혼란스러워집니다.


답변

다음은 15px 너비의 활동 표시기를 만듭니다.

#import <QuartzCore/QuartzCore.h>

...

UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
activityIndicator.transform = CGAffineTransformMakeScale(0.75, 0.75);
[self addSubview:activityIndicator];

TechZen의 답변에 대한 감정은 이해하지만 UIActivityIndicator의 크기를 비교적 적은 양으로 조정하는 것은 실제로 Apple의 표준화 된 인터페이스 관용구를 위반하는 것이라고 생각하지 않습니다. 활동 표시기가 20px이든 15px이든 사용자의 해석을 바꾸지 않습니다. 무슨 일이 일어나고 있는지.


답변

Swift 3.0 및 Swift 4.0

self.activityIndi.transform = CGAffineTransform(scaleX: 3, y: 3)


답변

UIActivityIndicator의 크기를 조정할 수 있습니다.

CGAffineTransform transform = CGAffineTransformMakeScale(1.5f, 1.5f);
activityIndicator.transform = transform;

원래 크기는 1.0f입니다. 이제 그에 따라 크기를 늘리거나 줄입니다.


답변

Swift3

 var activityIndicator = UIActivityIndicatorView()
    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
    let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
    activityIndicator.transform = transform
    activityIndicator.center = self.view.center
    activityIndicator.startAnimating()
    self.view.addSubview(activityIndicator)


답변

다음은 Swift 3.0에서 작동하는 확장이며 0 스케일링을 방지하기 위해 검사합니다 (또는 금지하려는 값).

extension UIActivityIndicatorView {
    func scale(factor: CGFloat) {
        guard factor > 0.0 else { return }

        transform = CGAffineTransform(scaleX: factor, y: factor)
    }
}

40 점 (2x)으로 확장하려면 다음과 같이 호출하십시오.

activityIndicatorView.scale(factor: 2.0)


답변

또한 사용할 수있는 다른 유용한 “CGAffineTransform”트릭도 많이 있습니다. 자세한 내용은 Apple Developer Library 참조를 참조하십시오.

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html

행운을 빕니다!